Browse Source

WebGLProgram: Unroll loops only for internal shaders.

Mr.doob 9 years ago
parent
commit
28697338c2
2 changed files with 9 additions and 5 deletions
  1. 1 1
      src/materials/RawShaderMaterial.js
  2. 8 4
      src/renderers/webgl/WebGLProgram.js

+ 1 - 1
src/materials/RawShaderMaterial.js

@@ -11,4 +11,4 @@ THREE.RawShaderMaterial = function ( parameters ) {
 };
 };
 
 
 THREE.RawShaderMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype );
 THREE.RawShaderMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype );
-THREE.RawShaderMaterial.prototype.constructor = THREE.RawShaderMaterial;
+THREE.RawShaderMaterial.prototype.constructor = THREE.RawShaderMaterial;

+ 8 - 4
src/renderers/webgl/WebGLProgram.js

@@ -444,11 +444,15 @@ THREE.WebGLProgram = ( function () {
 
 
 		}
 		}
 
 
-		vertexShader = replaceLightNums( vertexShader, parameters );
-		vertexShader = unrollLoops( vertexShader );
+		if ( material instanceof THREE.ShaderMaterial === false ) {
 
 
-		fragmentShader = replaceLightNums( fragmentShader, parameters );
-		fragmentShader = unrollLoops( fragmentShader );
+			vertexShader = replaceLightNums( vertexShader, parameters );
+			vertexShader = unrollLoops( vertexShader );
+
+			fragmentShader = replaceLightNums( fragmentShader, parameters );
+			fragmentShader = unrollLoops( fragmentShader );
+
+		}
 
 
 		var vertexGlsl = prefixVertex + vertexShader;
 		var vertexGlsl = prefixVertex + vertexShader;
 		var fragmentGlsl = prefixFragment + fragmentShader;
 		var fragmentGlsl = prefixFragment + fragmentShader;