NodeBuilderState.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import BindGroup from '../BindGroup.js';
  2. class NodeBuilderState {
  3. constructor( vertexShader, fragmentShader, computeShader, nodeAttributes, bindings, updateNodes, updateBeforeNodes, updateAfterNodes, instanceBindGroups = true, transforms = [] ) {
  4. this.vertexShader = vertexShader;
  5. this.fragmentShader = fragmentShader;
  6. this.computeShader = computeShader;
  7. this.transforms = transforms;
  8. this.nodeAttributes = nodeAttributes;
  9. this.bindings = bindings;
  10. this.updateNodes = updateNodes;
  11. this.updateBeforeNodes = updateBeforeNodes;
  12. this.updateAfterNodes = updateAfterNodes;
  13. this.instanceBindGroups = instanceBindGroups;
  14. this.usedTimes = 0;
  15. }
  16. createBindings() {
  17. const bindings = [];
  18. for ( const instanceGroup of this.bindings ) {
  19. const shared = this.instanceBindGroups && instanceGroup.bindings[ 0 ].groupNode.shared;
  20. if ( shared !== true ) {
  21. const bindingsGroup = new BindGroup( instanceGroup.name );
  22. bindings.push( bindingsGroup );
  23. for ( const instanceBinding of instanceGroup.bindings ) {
  24. bindingsGroup.bindings.push( instanceBinding.clone() );
  25. }
  26. } else {
  27. bindings.push( instanceGroup );
  28. }
  29. }
  30. return bindings;
  31. }
  32. }
  33. export default NodeBuilderState;