62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import TextureNode from './TextureNode.js';
 | |
| import { reflectVector } from './ReflectVectorNode.js';
 | |
| import { addNodeClass } from '../core/Node.js';
 | |
| import { addNodeElement, nodeProxy, vec3 } from '../shadernode/ShaderNode.js';
 | |
| import { WebGPUCoordinateSystem } from 'three';
 | |
| 
 | |
| class CubeTextureNode extends TextureNode {
 | |
| 
 | |
| 	constructor( value, uvNode = null, levelNode = null ) {
 | |
| 
 | |
| 		super( value, uvNode, levelNode );
 | |
| 
 | |
| 		this.isCubeTextureNode = true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	getInputType( /*builder*/ ) {
 | |
| 
 | |
| 		return 'cubeTexture';
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	getDefaultUV() {
 | |
| 
 | |
| 		return reflectVector;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	setUpdateMatrix( /*updateMatrix*/ ) { } // Ignore .updateMatrix for CubeTextureNode
 | |
| 
 | |
| 	setupUV( builder, uvNode ) {
 | |
| 
 | |
| 		const texture = this.value;
 | |
| 
 | |
| 		if ( builder.renderer.coordinateSystem === WebGPUCoordinateSystem || ! texture.isRenderTargetTexture ) {
 | |
| 
 | |
| 			return vec3( uvNode.x.negate(), uvNode.yz );
 | |
| 
 | |
| 		} else {
 | |
| 
 | |
| 			return uvNode;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	generateUV( builder, cubeUV ) {
 | |
| 
 | |
| 		return cubeUV.build( builder, 'vec3' );
 | |
| 
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| export default CubeTextureNode;
 | |
| 
 | |
| export const cubeTexture = nodeProxy( CubeTextureNode );
 | |
| 
 | |
| addNodeElement( 'cubeTexture', cubeTexture );
 | |
| 
 | |
| addNodeClass( 'CubeTextureNode', CubeTextureNode );
 |