|
@@ -0,0 +1,53 @@
|
|
|
+import { addNodeClass } from '../core/Node.js';
|
|
|
+import { nodeProxy, addNodeElement } from '../shadernode/ShaderNode.js';
|
|
|
+import ArrayElementNode from './ArrayElementNode.js';
|
|
|
+
|
|
|
+class StorageArrayElementNode extends ArrayElementNode {
|
|
|
+
|
|
|
+ constructor( storageBufferNode, indexNode ) {
|
|
|
+
|
|
|
+ super( storageBufferNode, indexNode );
|
|
|
+
|
|
|
+ this.isStorageArrayElementNode = true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ set storageBufferNode( value ) {
|
|
|
+
|
|
|
+ this.node = value;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ get storageBufferNode() {
|
|
|
+
|
|
|
+ return this.node;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ generate( builder ) {
|
|
|
+
|
|
|
+ let snippet;
|
|
|
+
|
|
|
+ if ( builder.isAvailable( 'storageBuffer' ) === false ) {
|
|
|
+
|
|
|
+ snippet = this.node.build( builder );
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ snippet = super.generate( builder );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return snippet;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+export default StorageArrayElementNode;
|
|
|
+
|
|
|
+export const storageElement = nodeProxy( StorageArrayElementNode );
|
|
|
+
|
|
|
+addNodeElement( 'storageElement', storageElement );
|
|
|
+
|
|
|
+addNodeClass( 'StorageArrayElementNode', StorageArrayElementNode );
|