From d4191cf082878344ae7010152db30ebaf070387c Mon Sep 17 00:00:00 2001 From: tschw Date: Wed, 8 Jul 2015 18:30:16 +0200 Subject: [PATCH] Fixes wrong program reference counting. --- src/renderers/WebGLRenderer.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index fbef89050d..e1eb4b95df 100644 --- a/src/renderers/WebGLRenderer.js +++ b/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; -- GitLab