From c5024cdace6d9f11371ebab6462cc7020d4d9938 Mon Sep 17 00:00:00 2001 From: aardgoose Date: Thu, 30 May 2019 16:58:52 +0100 Subject: [PATCH] remove need for state.id --- src/renderers/WebGLRenderer.js | 23 +++++------------------ src/renderers/webgl/WebGLLights.js | 9 +++------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 8ae94f269d..cff1b4c396 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1441,8 +1441,7 @@ function WebGLRenderer( parameters ) { var lights = currentRenderState.state.lights; var shadowsArray = currentRenderState.state.shadowsArray; - var lightsHash = materialProperties.lightsHash; - var lightsStateHash = lights.state.hash; + var lightsStateVersion = lights.state.version; var parameters = programCache.getParameters( material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); @@ -1462,11 +1461,9 @@ function WebGLRenderer( parameters ) { // changed glsl or parameters releaseMaterialProgramReference( material ); - } else if ( lightsHash.stateID !== lightsStateHash.stateID || - lightsHash.version !== lightsStateHash.version ) { + } else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) { - lightsHash.stateID = lightsStateHash.stateID; - lightsHash.version = lightsStateHash.version; + materialProperties.lightsStateVersion = lightsStateVersion; programChange = false; @@ -1567,14 +1564,8 @@ function WebGLRenderer( parameters ) { materialProperties.fog = fog; // store the light setup it was created for - if ( lightsHash === undefined ) { - materialProperties.lightsHash = lightsHash = {}; - - } - - lightsHash.stateID = lightsStateHash.stateID; - lightsHash.version = lightsStateHash.version; + materialProperties.lightsStateVersion = lightsStateVersion; if ( material.lights ) { @@ -1613,9 +1604,6 @@ function WebGLRenderer( parameters ) { var materialProperties = properties.get( material ); var lights = currentRenderState.state.lights; - var lightsHash = materialProperties.lightsHash; - var lightsStateHash = lights.state.hash; - if ( _clippingEnabled ) { if ( _localClippingEnabled || camera !== _currentCamera ) { @@ -1645,8 +1633,7 @@ function WebGLRenderer( parameters ) { material.needsUpdate = true; - } else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID || - lightsHash.version !== lightsStateHash.version ) ) { + } else if ( material.lights && materialProperties.lightsStateVersion !== lights.state.version ) { material.needsUpdate = true; diff --git a/src/renderers/webgl/WebGLLights.js b/src/renderers/webgl/WebGLLights.js index 629f4dbae8..f2a0c963e5 100644 --- a/src/renderers/webgl/WebGLLights.js +++ b/src/renderers/webgl/WebGLLights.js @@ -100,7 +100,7 @@ function UniformsCache() { } -var count = 0; +var nextVersion = 0; function WebGLLights() { @@ -108,17 +108,15 @@ function WebGLLights() { var state = { - id: count ++, + version: 0, hash: { - stateID: - 1, directionalLength: - 1, pointLength: - 1, spotLength: - 1, rectAreaLength: - 1, hemiLength: - 1, shadowsLength: - 1, - version: 0 }, ambient: [ 0, 0, 0 ], @@ -347,7 +345,6 @@ function WebGLLights() { state.point.length = pointLength; state.hemi.length = hemiLength; - hash.stateID = state.id; hash.directionalLength = directionalLength; hash.pointLength = pointLength; hash.spotLength = spotLength; @@ -355,7 +352,7 @@ function WebGLLights() { hash.hemiLength = hemiLength; hash.shadowsLength = shadows.length; - hash.version ++; + state.version = nextVersion++; } -- GitLab