TextureSizeNode.js 886 B

1234567891011121314151617181920212223242526272829303132333435
  1. import Node from '../core/Node.js';
  2. import { addNodeClass } from '../core/Node.js';
  3. import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
  4. class TextureSizeNode extends Node {
  5. constructor( textureNode, levelNode = null ) {
  6. super( 'uvec2' );
  7. this.isTextureSizeNode = true;
  8. this.textureNode = textureNode;
  9. this.levelNode = levelNode;
  10. }
  11. generate( builder, output ) {
  12. const textureProperty = this.textureNode.build( builder, 'property' );
  13. const levelNode = this.levelNode.build( builder, 'int' );
  14. return builder.format( `${ builder.getMethod( 'textureDimensions' ) }( ${ textureProperty }, ${ levelNode } )`, this.getNodeType( builder ), output );
  15. }
  16. }
  17. export default TextureSizeNode;
  18. export const textureSize = nodeProxy( TextureSizeNode );
  19. addNodeElement( 'textureSize', textureSize );
  20. addNodeClass( 'TextureSizeNode', TextureSizeNode );