ArrayElementNode.js 764 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import Node, { addNodeClass } from '../core/Node.js';
  2. class ArrayElementNode extends Node { // @TODO: If extending from TempNode it breaks webgpu_compute
  3. constructor( node, indexNode ) {
  4. super();
  5. this.node = node;
  6. this.indexNode = indexNode;
  7. this.isArrayElementNode = true;
  8. }
  9. getNodeType( builder ) {
  10. return this.node.getNodeType( builder );
  11. }
  12. generate( builder ) {
  13. const nodeSnippet = this.node.build( builder );
  14. const indexSnippet = this.indexNode.build( builder, 'uint' );
  15. if ( this.node.isStorageBufferNode && ! builder.isAvailable( 'storageBuffer' ) ) {
  16. return nodeSnippet;
  17. }
  18. return `${nodeSnippet}[ ${indexSnippet} ]`;
  19. }
  20. }
  21. export default ArrayElementNode;
  22. addNodeClass( 'ArrayElementNode', ArrayElementNode );