Code: Select all
uniform sampler2D ColorTex; //guess what :P
uniform sampler2D NormalTex; //view space normal.xy
uniform sampler2D DepthTex; //view space depth
uniform vec3 Direction;
uniform vec3 Color;
void main()
{
vec4 vNormal= texture2D(NormalTex, gl_TexCoord[0].xy);
//reconstruct normal
vNormal.xy*= 2.0;
vNormal.xy-= 1.0;
vNormal.z= -sqrt( -(vNormal.x*vNormal.x) - (vNormal.y*vNormal.y) + 1.0 );
//calculate the light
vec4 lightDir= vec4(normalize(Direction), 0.0);
float NdotL = max(dot(normalize(vNormal), lightDir), 0.0);
// Temp fix of the bug of the dot product at angle 90degree.
// This is useful for Phong shade and 1/2 vector calculation.
float rim = pow(1.0 - NdotL, 4.0); //Use the power constant 2,3... //Smaller power for softer light shadow.
vec4 Diffuse = vec4(Color,0.0)*texture2D(ColorTex, gl_TexCoord[0].xy);
gl_FragColor= rim*Diffuse;
}
Why don't we merge ambient with directional? Or can we access Ambient light data inside directional light?
Regards
thanh