diff --git a/examples/webgl_materials_modified.html b/examples/webgl_materials_modified.html index a8a406f243e5031b2b1fad11706975cd0dbacb45..f1e8f11883686e532c55ee571c716a659604ebeb 100644 --- a/examples/webgl_materials_modified.html +++ b/examples/webgl_materials_modified.html @@ -66,7 +66,7 @@ var camera, scene, renderer; - var mesh; + var mesh, materialShader; var mouseX = 0; var mouseY = 0; @@ -91,11 +91,9 @@ scene = new THREE.Scene(); var material = new THREE.MeshNormalMaterial(); - material.onBeforeCompile = function () { + material.onBeforeCompile = function ( shader ) { - var shader = this.__webglShader; - - // console.log( shader ); + // console.log( shader ) shader.uniforms.time = { value: 0 }; @@ -105,6 +103,8 @@ 'vec3 transformed = vec3( position.x + sin( time + position.y ) / 2.0, position.y, position.z );' ); + materialShader = shader; + }; loader = new THREE.JSONLoader(); @@ -177,11 +177,11 @@ mesh.rotation.y += 0.05 * ( targetX - mesh.rotation.y ); mesh.rotation.x += 0.05 * ( targetY - mesh.rotation.x ); - if ( mesh.material.__webglShader ) { + } - mesh.material.__webglShader.uniforms.time.value = performance.now() / 1000; + if ( materialShader ) { - } + materialShader.uniforms.time.value = performance.now() / 1000; } diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index cbb1d4b00c237f6fbe2a170b7359f075ddf13280..6433400d9514a917ea2866ac4262093ab1d75d3c 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1565,9 +1565,9 @@ function WebGLRenderer( parameters ) { } - material.__webglShader = materialProperties.__webglShader; + material.onBeforeCompile( materialProperties.__webglShader ); - material.onBeforeCompile(); + material.__webglShader = materialProperties.__webglShader; // TODO: Remove? program = programCache.acquireProgram( material, parameters, code );