Browse Source

add ReflectedLight struct to pair with IncidentLight struct.

Ben Houston 9 years ago
parent
commit
f25fd9b4f8

+ 8 - 2
src/renderers/shaders/ShaderChunk/common.glsl

@@ -83,10 +83,16 @@ vec3 linearToOutput( in vec3 a ) {
 
 
 
 
 struct IncidentLight {
 struct IncidentLight {
-  vec3 color;
-  vec3 direction;
+ 	vec3 color;
+ 	vec3 direction;
 };
 };
 
 
+struct ReflectedLight {
+ 	vec3 directSpecular;
+ 	vec3 directDiffuse;
+ 	vec3 indirectSpecular;
+ 	vec3 indirectDiffuse;
+};
 
 
 vec3 BRDF_Lambert( const in IncidentLight incidentLight, const in vec3 normal, const in vec3 diffuseColor ) {
 vec3 BRDF_Lambert( const in IncidentLight incidentLight, const in vec3 normal, const in vec3 diffuseColor ) {
 
 

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

@@ -9,6 +9,7 @@ vLightFront = vec3( 0.0 );
 vec3 normal = normalize( transformedNormal );
 vec3 normal = normalize( transformedNormal );
 vec3 diffuse = vec3( 1.0 );
 vec3 diffuse = vec3( 1.0 );
 
 
+
 #if MAX_POINT_LIGHTS > 0
 #if MAX_POINT_LIGHTS > 0
 
 
 	for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {
 	for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {

+ 16 - 15
src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl

@@ -1,9 +1,10 @@
 vec3 viewDir = normalize( vViewPosition );
 vec3 viewDir = normalize( vViewPosition );
 
 
-vec3 totalDirectReflectedSpecular = vec3( 0.0 );
-vec3 totalDirectReflectedDiffuse = vec3( 0.0 );
-vec3 totalIndirectReflectedSpecular = vec3( 0.0 );
-vec3 totalIndirectReflectedDiffuse = vec3( 0.0 );
+ReflectedLight reflectedLight;
+reflectedLight.directSpecular = vec3( 0.0 );
+reflectedLight.directDiffuse = vec3( 0.0 );
+reflectedLight.indirectSpecular = vec3( 0.0 );
+reflectedLight.indirectDiffuse = vec3( 0.0 );
 
 
 vec3 diffuse = diffuseColor.rgb;
 vec3 diffuse = diffuseColor.rgb;
 
 
@@ -20,10 +21,10 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		IncidentLight incidentLight;
 		getPointLightDirect( pointLights[ i ], -vViewPosition, incidentLight );
 		getPointLightDirect( pointLights[ i ], -vViewPosition, incidentLight );
 
 
-		totalDirectReflectedDiffuse +=
+		reflectedLight.directDiffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
 
-		totalDirectReflectedSpecular +=
+		reflectedLight.directSpecular +=
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 
 
 	}
 	}
@@ -37,10 +38,10 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		IncidentLight incidentLight;
 		getSpotLightDirect( spotLights[ i ], -vViewPosition, incidentLight );
 		getSpotLightDirect( spotLights[ i ], -vViewPosition, incidentLight );
 
 
-		totalDirectReflectedDiffuse +=
+		reflectedLight.directDiffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
 
-		totalDirectReflectedSpecular +=
+		reflectedLight.directSpecular +=
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 
 
 	}
 	}
@@ -54,10 +55,10 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		IncidentLight incidentLight;
 		getDirLightDirect( directionalLights[ i ], incidentLight );
 		getDirLightDirect( directionalLights[ i ], incidentLight );
 
 
-		totalDirectReflectedDiffuse +=
+		reflectedLight.directDiffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
 
-		totalDirectReflectedSpecular +=
+		reflectedLight.directSpecular +=
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 
 
 	}
 	}
@@ -71,7 +72,7 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		IncidentLight incidentLight;
 		getHemisphereLightIndirect( hemisphereLights[ i ], normal, incidentLight );
 		getHemisphereLightIndirect( hemisphereLights[ i ], normal, incidentLight );
 
 
-		totalIndirectReflectedDiffuse +=
+		reflectedLight.indirectDiffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
 
 	}
 	}
@@ -80,8 +81,8 @@ vec3 diffuse = diffuseColor.rgb;
 
 
 
 
 outgoingLight +=
 outgoingLight +=
-	totalDirectReflectedDiffuse +
-	totalDirectReflectedSpecular +
-	totalIndirectReflectedDiffuse +
-	totalIndirectReflectedSpecular +
+	reflectedLight.directSpecular +
+	reflectedLight.directDiffuse +
+	reflectedLight.indirectSpecular +
+	reflectedLight.indirectDiffuse +
 	totalEmissiveLight;
 	totalEmissiveLight;