#version 330 //#version 410 in vec3 VertexPosition; in vec3 VertexNormal; out vec3 Normal; out vec4 Position; // Coordinate to be used for shadow map lookup out vec4 ShadowCoord; uniform mat4 ModelViewMatrix; uniform mat3 NormalMatrix; uniform mat4 MVP; uniform mat4 ShadowMatrix; void getEyeSpace( out vec3 norm, out vec4 position ) { norm = normalize( NormalMatrix * VertexNormal ); position = ModelViewMatrix * vec4(VertexPosition, 1.0); } void main() { // Get the position and normal in eye space getEyeSpace( Normal, Position ); // ShadowMatrix converts from modeling coordinates to shadow map coordinates. ShadowCoord = ShadowMatrix * vec4( VertexPosition, 1.0 ); // ShadowCoord.z = ShadowCoord.z; ShadowCoord.xyz = ShadowCoord.xyz / ShadowCoord.w; ShadowCoord.w = 1; ShadowCoord.z = ShadowCoord.z - 0.0006; gl_Position = MVP * vec4( VertexPosition, 1.0 ); }