WebGPURenderObjects.js 1005 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import WebGPUWeakMap from './WebGPUWeakMap.js';
  2. import WebGPURenderObject from './WebGPURenderObject.js';
  3. class WebGPURenderObjects {
  4. constructor( renderer, nodes, geometries, info ) {
  5. this.renderer = renderer;
  6. this.nodes = nodes;
  7. this.geometries = geometries;
  8. this.info = info;
  9. this.cache = new WebGPUWeakMap();
  10. }
  11. get( object, material, scene, camera, lightsNode ) {
  12. const chainKey = [ object, material, scene, camera, lightsNode ];
  13. let renderObject = this.cache.get( chainKey );
  14. if ( renderObject === undefined ) {
  15. renderObject = new WebGPURenderObject( this.renderer, this.nodes, object, material, scene, camera, lightsNode );
  16. this.cache.set( chainKey, renderObject );
  17. }
  18. return renderObject;
  19. }
  20. remove( object, material, scene, camera, lightsNode ) {
  21. this.cache.delete( [ object, material, scene, camera, lightsNode ] );
  22. }
  23. dispose() {
  24. this.cache = new WebGPUWeakMap();
  25. this.updateMap = new WeakMap();
  26. }
  27. }
  28. export default WebGPURenderObjects;