CubeTextureNode.js 931 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import TextureNode from './TextureNode.js';
  2. import { reflectVector } from './ReflectVectorNode.js';
  3. import { addNodeClass } from '../core/Node.js';
  4. import { addNodeElement, nodeProxy, vec3 } from '../shadernode/ShaderNode.js';
  5. class CubeTextureNode extends TextureNode {
  6. constructor( value, uvNode = null, levelNode = null ) {
  7. super( value, uvNode, levelNode );
  8. this.isCubeTextureNode = true;
  9. }
  10. getInputType( /*builder*/ ) {
  11. return 'cubeTexture';
  12. }
  13. getDefaultUV() {
  14. return reflectVector;
  15. }
  16. setUpdateMatrix( /*updateMatrix*/ ) { } // Ignore .updateMatrix for CubeTextureNode
  17. generateUV( builder, uvNode ) {
  18. const cubeUV = vec3( uvNode.x.negate(), uvNode.yz );
  19. return cubeUV.build( builder, 'vec3' );
  20. }
  21. }
  22. export default CubeTextureNode;
  23. export const cubeTexture = nodeProxy( CubeTextureNode );
  24. addNodeElement( 'cubeTexture', cubeTexture );
  25. addNodeClass( 'CubeTextureNode', CubeTextureNode );