1uniform mat4 m_LightViewProjectionMatrix;
2uniform mat4 g_WorldViewProjectionMatrix;
3uniform mat4 g_WorldMatrix;
4
5varying vec4 projCoord;
6
7attribute vec3 inPosition;
8
9const mat4 biasMat = mat4(0.5, 0.0, 0.0, 0.0,
10                          0.0, 0.5, 0.0, 0.0,
11                          0.0, 0.0, 0.5, 0.0,
12                          0.5, 0.5, 0.5, 1.0);
13
14void main(){
15    gl_Position = g_WorldViewProjectionMatrix * vec4(inPosition, 1.0);
16
17    // get the vertex in world space
18    vec4 worldPos = g_WorldMatrix * vec4(inPosition, 1.0);
19
20    // convert vertex to light viewProj space
21    //projCoord = biasMat * (m_LightViewProjectionMatrix * worldPos);
22    vec4 coord = m_LightViewProjectionMatrix * worldPos;
23    projCoord = biasMat * coord;
24    //projCoord.z /= gl_DepthRange.far;
25    //projCoord = (m_LightViewProjectionMatrix * worldPos);
26    //projCoord /= projCoord.w;
27    //projCoord.xy = projCoord.xy * vec2(0.5, -0.5) + vec2(0.5);
28
29    // bias from [-1, 1] to [0, 1] for sampling shadow map
30    //projCoord = (projCoord.xyzw * vec4(0.5)) + vec4(0.5);
31}