添加关照、全局等高线、修改图层问题
This commit is contained in:
91
static/sdk/three/jsm/nodes/utils/StorageArrayElementNode.js
Normal file
91
static/sdk/three/jsm/nodes/utils/StorageArrayElementNode.js
Normal file
@ -0,0 +1,91 @@
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
setup( builder ) {
|
||||
|
||||
if ( builder.isAvailable( 'storageBuffer' ) === false ) {
|
||||
|
||||
if ( ! this.node.instanceIndex && this.node.bufferObject === true ) {
|
||||
|
||||
builder.setupPBO( this.node );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return super.setup( builder );
|
||||
|
||||
}
|
||||
|
||||
generate( builder, output ) {
|
||||
|
||||
let snippet;
|
||||
|
||||
const isAssignContext = builder.context.assign;
|
||||
|
||||
//
|
||||
|
||||
if ( builder.isAvailable( 'storageBuffer' ) === false ) {
|
||||
|
||||
const { node } = this;
|
||||
|
||||
if ( ! node.instanceIndex && this.node.bufferObject === true && isAssignContext !== true ) {
|
||||
|
||||
snippet = builder.generatePBO( this );
|
||||
|
||||
} else {
|
||||
|
||||
snippet = node.build( builder );
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
snippet = super.generate( builder );
|
||||
|
||||
}
|
||||
|
||||
if ( isAssignContext !== true ) {
|
||||
|
||||
const type = this.getNodeType( builder );
|
||||
|
||||
snippet = builder.format( snippet, type, output );
|
||||
|
||||
}
|
||||
|
||||
return snippet;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default StorageArrayElementNode;
|
||||
|
||||
export const storageElement = nodeProxy( StorageArrayElementNode );
|
||||
|
||||
addNodeElement( 'storageElement', storageElement );
|
||||
|
||||
addNodeClass( 'StorageArrayElementNode', StorageArrayElementNode );
|
Reference in New Issue
Block a user