Browse Source

remove need for state.id

aardgoose 6 years ago
parent
commit
c5024cdace
2 changed files with 8 additions and 24 deletions
  1. 5 18
      src/renderers/WebGLRenderer.js
  2. 3 6
      src/renderers/webgl/WebGLLights.js

+ 5 - 18
src/renderers/WebGLRenderer.js

@@ -1441,8 +1441,7 @@ function WebGLRenderer( parameters ) {
 		var lights = currentRenderState.state.lights;
 		var lights = currentRenderState.state.lights;
 		var shadowsArray = currentRenderState.state.shadowsArray;
 		var shadowsArray = currentRenderState.state.shadowsArray;
 
 
-		var lightsHash = materialProperties.lightsHash;
-		var lightsStateHash = lights.state.hash;
+		var lightsStateVersion = lights.state.version;
 
 
 		var parameters = programCache.getParameters(
 		var parameters = programCache.getParameters(
 			material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );
 			material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );
@@ -1462,11 +1461,9 @@ function WebGLRenderer( parameters ) {
 			// changed glsl or parameters
 			// changed glsl or parameters
 			releaseMaterialProgramReference( material );
 			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;
 			programChange = false;
 
 
@@ -1567,14 +1564,8 @@ function WebGLRenderer( parameters ) {
 		materialProperties.fog = fog;
 		materialProperties.fog = fog;
 
 
 		// store the light setup it was created for
 		// 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 ) {
 		if ( material.lights ) {
 
 
@@ -1613,9 +1604,6 @@ function WebGLRenderer( parameters ) {
 		var materialProperties = properties.get( material );
 		var materialProperties = properties.get( material );
 		var lights = currentRenderState.state.lights;
 		var lights = currentRenderState.state.lights;
 
 
-		var lightsHash = materialProperties.lightsHash;
-		var lightsStateHash = lights.state.hash;
-
 		if ( _clippingEnabled ) {
 		if ( _clippingEnabled ) {
 
 
 			if ( _localClippingEnabled || camera !== _currentCamera ) {
 			if ( _localClippingEnabled || camera !== _currentCamera ) {
@@ -1645,8 +1633,7 @@ function WebGLRenderer( parameters ) {
 
 
 				material.needsUpdate = true;
 				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;
 				material.needsUpdate = true;
 
 

+ 3 - 6
src/renderers/webgl/WebGLLights.js

@@ -100,7 +100,7 @@ function UniformsCache() {
 
 
 }
 }
 
 
-var count = 0;
+var nextVersion = 0;
 
 
 function WebGLLights() {
 function WebGLLights() {
 
 
@@ -108,17 +108,15 @@ function WebGLLights() {
 
 
 	var state = {
 	var state = {
 
 
-		id: count ++,
+		version: 0,
 
 
 		hash: {
 		hash: {
-			stateID: - 1,
 			directionalLength: - 1,
 			directionalLength: - 1,
 			pointLength: - 1,
 			pointLength: - 1,
 			spotLength: - 1,
 			spotLength: - 1,
 			rectAreaLength: - 1,
 			rectAreaLength: - 1,
 			hemiLength: - 1,
 			hemiLength: - 1,
 			shadowsLength: - 1,
 			shadowsLength: - 1,
-			version: 0
 		},
 		},
 
 
 		ambient: [ 0, 0, 0 ],
 		ambient: [ 0, 0, 0 ],
@@ -347,7 +345,6 @@ function WebGLLights() {
 			state.point.length = pointLength;
 			state.point.length = pointLength;
 			state.hemi.length = hemiLength;
 			state.hemi.length = hemiLength;
 
 
-			hash.stateID = state.id;
 			hash.directionalLength = directionalLength;
 			hash.directionalLength = directionalLength;
 			hash.pointLength = pointLength;
 			hash.pointLength = pointLength;
 			hash.spotLength = spotLength;
 			hash.spotLength = spotLength;
@@ -355,7 +352,7 @@ function WebGLLights() {
 			hash.hemiLength = hemiLength;
 			hash.hemiLength = hemiLength;
 			hash.shadowsLength = shadows.length;
 			hash.shadowsLength = shadows.length;
 
 
-			hash.version ++;
+			state.version = nextVersion++;
 
 
 		}
 		}