Browse Source

simplier definition of ReflectedLight.

Ben Houston 9 years ago
parent
commit
c66fd070f3

+ 3 - 7
src/renderers/shaders/ShaderChunk/common.glsl

@@ -88,10 +88,8 @@ struct IncidentLight {
 };
 
 struct ReflectedLight {
- 	vec3 directSpecular;
- 	vec3 directDiffuse;
- 	vec3 indirectSpecular;
- 	vec3 indirectDiffuse;
+ 	vec3 specular;
+ 	vec3 diffuse;
 };
 
 vec3 BRDF_Lambert( const in IncidentLight incidentLight, const in vec3 normal, const in vec3 diffuseColor ) {
@@ -150,8 +148,6 @@ vec3 BRDF_BlinnPhong( const in IncidentLight incidentLight, const in vec3 normal
 	  vec3 color;
 	};
 
-	uniform DirectionalLight singleTestDirLight;
-
 	uniform DirectionalLight directionalLights[ MAX_DIR_LIGHTS ];
 
 	void getDirLightDirect( const in DirectionalLight directionalLight, out IncidentLight incidentLight ) { 
@@ -228,7 +224,7 @@ vec3 BRDF_BlinnPhong( const in IncidentLight incidentLight, const in vec3 normal
 	  vec3 groundColor;
 	};
 
-	uniform HemisphereLight hemisphereLights[ MAX_HEMI_LIGHTS ];
+	layout(packed)uniform HemisphereLight hemisphereLights[ MAX_HEMI_LIGHTS ];
 
 	void getHemisphereLightIndirect( const in HemisphereLight hemiLight, const in vec3 normal, out IncidentLight incidentLight ) { 
 	

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

@@ -1,10 +1,7 @@
 vec3 viewDir = normalize( vViewPosition );
 
-ReflectedLight reflectedLight;
-reflectedLight.directSpecular = vec3( 0.0 );
-reflectedLight.directDiffuse = vec3( 0.0 );
-reflectedLight.indirectSpecular = vec3( 0.0 );
-reflectedLight.indirectDiffuse = vec3( 0.0 );
+ReflectedLight directReflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ) );
+ReflectedLight indirectReflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ) );
 
 vec3 diffuse = diffuseColor.rgb;
 
@@ -21,10 +18,10 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		getPointLightDirect( pointLights[ i ], -vViewPosition, incidentLight );
 
-		reflectedLight.directDiffuse +=
+		directReflectedLight.diffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
-		reflectedLight.directSpecular +=
+		directReflectedLight.specular +=
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 
 	}
@@ -38,10 +35,10 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		getSpotLightDirect( spotLights[ i ], -vViewPosition, incidentLight );
 
-		reflectedLight.directDiffuse +=
+		directReflectedLight.diffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
-		reflectedLight.directSpecular +=
+		directReflectedLight.specular +=
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 
 	}
@@ -55,10 +52,10 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		getDirLightDirect( directionalLights[ i ], incidentLight );
 
-		reflectedLight.directDiffuse +=
+		directReflectedLight.diffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
-		reflectedLight.directSpecular +=
+		directReflectedLight.specular +=
 			BRDF_BlinnPhong( incidentLight, normal, viewDir, specular, shininess );
 
 	}
@@ -72,7 +69,7 @@ vec3 diffuse = diffuseColor.rgb;
 		IncidentLight incidentLight;
 		getHemisphereLightIndirect( hemisphereLights[ i ], normal, incidentLight );
 
-		reflectedLight.indirectDiffuse +=
+		indirectReflectedLight.diffuse +=
 			BRDF_Lambert( incidentLight, normal, diffuse );
 
 	}
@@ -81,8 +78,6 @@ vec3 diffuse = diffuseColor.rgb;
 
 
 outgoingLight +=
-	reflectedLight.directSpecular +
-	reflectedLight.directDiffuse +
-	reflectedLight.indirectSpecular +
-	reflectedLight.indirectDiffuse +
+	directReflectedLight.specular + directReflectedLight.diffuse +
+	indirectReflectedLight.specular + indirectReflectedLight.diffuse +
 	totalEmissiveLight;