Sfoglia il codice sorgente

WebGLRenderer: Pass __webglShader to onBeforeCompile()

Mr.doob 8 anni fa
parent
commit
f392739fea
2 ha cambiato i file con 10 aggiunte e 10 eliminazioni
  1. 8 8
      examples/webgl_materials_modified.html
  2. 2 2
      src/renderers/WebGLRenderer.js

+ 8 - 8
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;
 
 				}
 

+ 2 - 2
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 );