StorageArrayElementNode.js 942 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { addNodeClass } from '../core/Node.js';
  2. import { nodeProxy, addNodeElement } from '../shadernode/ShaderNode.js';
  3. import ArrayElementNode from './ArrayElementNode.js';
  4. class StorageArrayElementNode extends ArrayElementNode {
  5. constructor( storageBufferNode, indexNode ) {
  6. super( storageBufferNode, indexNode );
  7. this.isStorageArrayElementNode = true;
  8. }
  9. set storageBufferNode( value ) {
  10. this.node = value;
  11. }
  12. get storageBufferNode() {
  13. return this.node;
  14. }
  15. generate( builder ) {
  16. let snippet;
  17. if ( builder.isAvailable( 'storageBuffer' ) === false ) {
  18. snippet = this.node.build( builder );
  19. } else {
  20. snippet = super.generate( builder );
  21. }
  22. return snippet;
  23. }
  24. }
  25. export default StorageArrayElementNode;
  26. export const storageElement = nodeProxy( StorageArrayElementNode );
  27. addNodeElement( 'storageElement', storageElement );
  28. addNodeClass( 'StorageArrayElementNode', StorageArrayElementNode );