Przeglądaj źródła

MeshLambertMaterial: Moved ambientLightColor to fargment shader.

Mr.doob 9 lat temu
rodzic
commit
580761cc5b

+ 0 - 2
src/renderers/shaders/ShaderChunk/lights_lambert_pars_vertex.glsl

@@ -1,5 +1,3 @@
-uniform vec3 ambientLightColor;
-
 #if MAX_DIR_LIGHTS > 0
 
 	uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];

+ 0 - 8
src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl

@@ -126,11 +126,3 @@ vec3 normal = normalize( transformedNormal );
 	}
 
 #endif
-
-vLightFront += ambientLightColor;
-
-#ifdef DOUBLE_SIDED
-
-	vLightBack += ambientLightColor;
-
-#endif

+ 6 - 3
src/renderers/shaders/ShaderLib.js

@@ -182,6 +182,8 @@ THREE.ShaderLib = {
 			"uniform vec3 emissive;",
 			"uniform float opacity;",
 
+			"uniform vec3 ambientLightColor;",
+
 			"varying vec3 vLightFront;",
 
 			"#ifdef DOUBLE_SIDED",
@@ -206,6 +208,7 @@ THREE.ShaderLib = {
 
 			"	vec3 outgoingLight = vec3( 0.0 );",	// outgoing light does not have an alpha, the surface does
 			"	vec4 diffuseColor = vec4( diffuse, opacity );",
+			"	vec3 totalAmbientLight = ambientLightColor;",
 
 				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
@@ -217,13 +220,13 @@ THREE.ShaderLib = {
 			"	#ifdef DOUBLE_SIDED",
 
 			"		if ( gl_FrontFacing )",
-			"			outgoingLight += diffuseColor.rgb * vLightFront + emissive;",
+			"			outgoingLight += diffuseColor.rgb * ( vLightFront + totalAmbientLight ) + emissive;",
 			"		else",
-			"			outgoingLight += diffuseColor.rgb * vLightBack + emissive;",
+			"			outgoingLight += diffuseColor.rgb * ( vLightBack + totalAmbientLight ) + emissive;",
 
 			"	#else",
 
-			"		outgoingLight += diffuseColor.rgb * vLightFront + emissive;",
+			"		outgoingLight += diffuseColor.rgb * ( vLightFront + totalAmbientLight ) + emissive;",
 
 			"	#endif",