1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import WebGPUWeakMap from './WebGPUWeakMap.js';
- import { lights } from '../../nodes/Nodes.js';
- class WebGPURenderState {
- constructor() {
- this.lightsNode = lights( [] );
- this.lightsArray = [];
- }
- init() {
- this.lightsArray.length = 0;
- }
- pushLight( light ) {
- this.lightsArray.push( light );
- }
- getLightsNode() {
- return this.lightsNode.fromLights( this.lightsArray );
- }
- }
- class WebGPURenderStates {
- constructor() {
- this.renderStates = new WebGPUWeakMap();
- }
- get( scene, camera ) {
- const chainKey = [ scene, camera ];
- let renderState = this.renderStates.get( chainKey );
- if ( renderState === undefined ) {
- renderState = new WebGPURenderState();
- this.renderStates.set( chainKey, renderState );
- }
- return renderState;
- }
- dispose() {
- this.renderStates = new WebGPUWeakMap();
- }
- }
- export default WebGPURenderStates;
|