1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import WebGPUNodeBuilder from './WebGPUNodeBuilder.js';
- import NodeFrame from '../../nodes/core/NodeFrame.js';
- class WebGPUNodes {
- constructor( renderer ) {
- this.renderer = renderer;
- this.nodeFrame = new NodeFrame();
- this.builders = new WeakMap();
- }
- get( material ) {
- let nodeBuilder = this.builders.get( material );
- if ( nodeBuilder === undefined ) {
- nodeBuilder = new WebGPUNodeBuilder( material, this.renderer ).build();
- this.builders.set( material, nodeBuilder );
- }
- return nodeBuilder;
- }
- remove( object ) {
- this.builders.delete( object );
- }
- updateFrame() {
- this.nodeFrame.update();
- }
- update( object, camera ) {
- const material = object.material;
- const nodeBuilder = this.get( material );
- this.nodeFrame.material = object.material;
- for ( let node of nodeBuilder.updateNodes ) {
- this.nodeFrame.updateNode( node );
- }
- }
- dispose() {
- this.builders = new WeakMap();
- }
- }
- export default WebGPUNodes;
|