WebGPURenderStates.js 746 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import WebGPUWeakMap from './WebGPUWeakMap.js';
  2. class WebGPURenderState {
  3. constructor() {
  4. this.depth = true;
  5. this.stencil = true;
  6. // defined by renderer(backend)
  7. this.descriptorGPU = null;
  8. this.encoderGPU = null;
  9. this.currentPassGPU = null;
  10. }
  11. }
  12. class WebGPURenderStates {
  13. constructor() {
  14. this.renderStates = new WebGPUWeakMap();
  15. }
  16. get( scene, camera ) {
  17. const chainKey = [ scene, camera ];
  18. let renderState = this.renderStates.get( chainKey );
  19. if ( renderState === undefined ) {
  20. renderState = new WebGPURenderState();
  21. this.renderStates.set( chainKey, renderState );
  22. }
  23. return renderState;
  24. }
  25. dispose() {
  26. this.renderStates = new WebGPUWeakMap();
  27. }
  28. }
  29. export default WebGPURenderStates;