12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { TempNode } from '../core/TempNode.js';
- import { ResolutionNode } from './ResolutionNode.js';
- class ScreenUVNode extends TempNode {
- constructor( resolution ) {
- super( 'v2' );
- this.resolution = resolution || new ResolutionNode();
- }
- generate( builder, output ) {
- let result;
- if ( builder.isShader( 'fragment' ) ) {
- result = '( gl_FragCoord.xy / ' + this.resolution.build( builder, 'v2' ) + ')';
- } else {
- console.warn( 'THREE.ScreenUVNode is not compatible with ' + builder.shader + ' shader.' );
- result = 'vec2( 0.0 )';
- }
- return builder.format( result, this.getType( builder ), output );
- }
- copy( source ) {
- super.copy( source );
- this.resolution = source.resolution;
- return this;
- }
- toJSON( meta ) {
- let data = this.getJSONNode( meta );
- if ( ! data ) {
- data = this.createJSONNode( meta );
- data.resolution = this.resolution.toJSON( meta ).uuid;
- }
- return data;
- }
- }
- ScreenUVNode.prototype.nodeType = 'ScreenUV';
- export { ScreenUVNode };
|