Specular lighting now working correctly with the deferred lighting

--HG--
extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%4051
This commit is contained in:
kearwood
2012-04-20 00:48:23 +00:00
parent 6c76335d9e
commit b2c67f5276
3 changed files with 10 additions and 4 deletions

View File

@@ -29,7 +29,7 @@ std::string KRDirectionalLight::getElementName() {
KRVector3 KRDirectionalLight::getLightDirection() {
KRVector3 world_rotation = getWorldRotation();
KRVector3 light_rotation = KRVector3(0.0, -1.0, 0.0);
KRVector3 light_rotation = KRVector3(0.0, 0.0, 1.0);
KRMat4 m;
m.rotate(world_rotation.x, X_AXIS);
m.rotate(world_rotation.y, Y_AXIS);

View File

@@ -258,7 +258,7 @@ void main()
gl_FragColor = vec4(gl_FragColor.r * lightMapColor.r, gl_FragColor.g * lightMapColor.g, gl_FragColor.b * lightMapColor.b, 1.0);
#endif
// gl_FragColor = vec4(vec3(specularFactor), 1.0);
//gl_FragColor = vec4(vec3(specularFactor), 1.0);
#endif
}

View File

@@ -58,10 +58,16 @@ void main()
highp vec3 view_space_vertex_position;
view_space_vertex_position.xy = ((2.0 * gl_FragCoord.xy) - (2.0 * viewport.xy)) / (viewport.zw) - 1.0;
view_space_vertex_position.z = -texture2D(gbuffer_depth, gbuffer_uv).r;
//view_space_vertex_position.z = -texture2D(gbuffer_depth, gbuffer_uv).r * 2.0;
view_space_vertex_position.z = (2.0 * -texture2D(gbuffer_depth, gbuffer_uv).r - gl_DepthRange.near - gl_DepthRange.far) /
(gl_DepthRange.far - gl_DepthRange.near);
highp vec3 halfVec = normalize((normalize(vec3(0.0, 0.0, 0.0) - view_space_vertex_position) + view_space_light)); // Normalizing anyways, no need to divide by 2
mediump float specularFactor = clamp(pow(dot(halfVec,normalize(gbuffer_normal)), gbuffer_specular_exponent), 0.0, 1.0);
mediump float specularFactor = 0.0;
if(gbuffer_specular_exponent > 0.0) {
specularFactor = clamp(pow(dot(halfVec,normalize(gbuffer_normal)), gbuffer_specular_exponent), 0.0, 1.0);
}
gl_FragColor = vec4(vec3(lamberFactor), specularFactor);
}