Browse Source

incorporate ambientLightColor into standardized BRDF calculations.

Ben Houston 9 years ago
parent
commit
c5e001a74b

+ 9 - 0
src/renderers/shaders/ShaderChunk/lights_pars.glsl

@@ -86,6 +86,15 @@ uniform vec3 ambientLightColor;
 
 #endif
 
+	IncidentLight getAmbientIndirectLight( const in vec3 ambientLightColor, const in GeometricContext geometry ) { 
+	
+		IncidentLight indirectLight;
+
+		indirectLight.color = ambientLightColor;
+		indirectLight.direction = geometry.normal;
+
+		return indirectLight;
+	}
 
 #if MAX_HEMI_LIGHTS > 0
 

+ 1 - 1
src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl

@@ -38,6 +38,6 @@ void BRDF_BlinnPhongMaterial_IndirectLight( const in IncidentLight indirectLight
 
 }
 
-#define BRDF_Material_IndirectLight    BRDF_BlinnPhongMaterial_IndirectLight
+#define BRDF_Material_DiffuseIndirectLight    BRDF_BlinnPhongMaterial_IndirectLight
 
 #define Material_LightProbeLOD( material )   (0)

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

@@ -40,6 +40,14 @@ GeometricContext geometry = GeometricContext( -vViewPosition, normalize( normal
 
 #endif
 
+	{
+	
+		IncidentLight indirectLight = getAmbientIndirectLight( ambientLightColor, geometry );
+
+		BRDF_Material_DiffuseIndirectLight( indirectLight, geometry, material, indirectReflectedLight );
+
+	}
+
 #if ( MAX_HEMI_LIGHTS > 0 ) && defined( BRDF_Material_DiffuseIndirectLight )
 
 	for ( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {

+ 2 - 2
src/renderers/shaders/ShaderLib.js

@@ -364,7 +364,7 @@ THREE.ShaderLib = {
 
 			"	vec4 diffuseColor = vec4( diffuse, opacity );",
 			"	ReflectedLight directReflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ) );",
-			"	ReflectedLight indirectReflectedLight = ReflectedLight( vec3( 0.0 ), ambientLightColor );",
+			"	ReflectedLight indirectReflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ) );",
 			"	vec3 totalEmissiveLight = emissive;",
 			
 				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
@@ -538,7 +538,7 @@ THREE.ShaderLib = {
 
 			"	vec4 diffuseColor = vec4( diffuse, opacity );",
 			"	ReflectedLight directReflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ) );",
-			"	ReflectedLight indirectReflectedLight = ReflectedLight( vec3( 0.0 ), ambientLightColor );",
+			"	ReflectedLight indirectReflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ) );",
 			"	vec3 totalEmissiveLight = emissive;",
 
 				THREE.ShaderChunk[ "logdepthbuf_fragment" ],

+ 0 - 1
utils/build/includes/common.json

@@ -126,7 +126,6 @@
 	"src/renderers/shaders/ShaderChunk/envmap_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/envmap_physical_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/envmap_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/fog_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl",