 
 		IncidentLight directLight = getSpotDirectLight( spotLights[ i ], geometry );
 
-		float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
-		vLightFront += dotNL * directLight.color * BRDF_Diffuse_Lambert( diffuse );
+		float dotNL = dot( geometry.normal, directLight.direction );
+		vec3 directLightColor_Diffuse = directLight.color * BRDF_Diffuse_Lambert( diffuse );
+
+		vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
 
 		#ifdef DOUBLE_SIDED
 
-			float backDotNL = saturate( dot( -geometry.normal, directLight.direction ) );
-			vLightBack += backDotNL * directLight.color * BRDF_Diffuse_Lambert( diffuse );
+			vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
 
 		#endif
 	}


		IncidentLight directLight = getDirectionalDirectLight( directionalLights[ i ], geometry );

		float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
		vLightFront += dotNL * directLight.color * BRDF_Diffuse_Lambert( diffuse );

		#ifdef DOUBLE_SIDED

			float backDotNL = saturate( dot( -geometry.normal, directLight.direction ) );
			vLightBack += backDotNL * directLight.color * BRDF_Diffuse_Lambert( diffuse );

		#endif



		IncidentLight directLight = getPointDirectLight( pointLights[ i ], geometry );

		float dotNL = dot( geometry.normal, directLight.direction );
		vec3 directLightColor_Diffuse = directLight.color * BRDF_Diffuse_Lambert( diffuse );

		vLightFront += saturate( dotNL ) * directLightColor_Diffuse;

		#ifdef DOUBLE_SIDED

			vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;

		#endif

