varying vec3 v_Normal;
varying vec3 v_Tangent;
varying vec2 v_TexCoord;
varying vec4 v_Vertex;
varying vec3 v_WorldSpace;
uniform sampler2D u_NormalMap;
void main()
{
vec3 l_lightVector = gl_LightSource[0].position.xyz - v_Vertex.xyz;
vec3 l_biTangent = cross(v_Tangent, v_Normal);
mat3 l_tbnMatrix = mat3(v_Tangent, l_biTangent, v_Normal);
vec3 l_direction = normalize(l_tbnMatrix * l_lightVector);
vec4 l_normalMap = texture2D(u_NormalMap, v_TexCoord);
l_normalMap = (l_normalMap - 0.5) * 2.0;
vec3 l_color = dot(l_normalMap.xyz, l_direction);
gl_FragColor = vec4(l_color, 1.0);
}