Răsfoiți Sursa

Fixes wrong program reference counting.

tschw 10 ani în urmă
părinte
comite
d4191cf082
1 a modificat fișierele cu 13 adăugiri și 2 ștergeri
  1. 13 2
      src/renderers/WebGLRenderer.js

+ 13 - 2
src/renderers/WebGLRenderer.js

@@ -1927,6 +1927,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		}
 
 		var code = chunks.join();
+		var programChange = true;
 
 		if ( !materialProperties.program ) {
 
@@ -1940,7 +1941,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		} else if ( shaderID !== undefined ) {
 
-			// same glsl
+			// same glsl and uniform list
 			return;
 
 		} else if ( materialProperties.__webglShader.uniforms === material.uniforms ) {
@@ -1948,6 +1949,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 			// same uniforms (container object)
 			return;
 
+		} else {
+
+			// only rebuild uniform list
+			programChange = false;
+
 		}
 
 		if ( shaderID ) {
@@ -1983,7 +1989,12 @@ THREE.WebGLRenderer = function ( parameters ) {
 			if ( programInfo.code === code ) {
 
 				program = programInfo;
-				program.usedTimes ++;
+
+				if ( programChange ) {
+
+					program.usedTimes ++;
+
+				}
 
 				break;