#version 150
#define GL_core_profile 1
#extension GL_EXT_gpu_shader4 : enable
#extension GL_ARB_shader_texture_lod : enable
uniform mat4 Gpu_ModelViewMatrix; // Modelview
uniform mat4 Gpu_ModelViewMatrixInverse; // Inverse of modelview
uniform mat4 Gpu_ProjectionMatrix; // Projection
uniform mat3 Gpu_NormalMatrix; // Normal matrix (IT of 3x3 rotation part of modelview)
uniform vec3 lightPos; // Light position
in vec3 Gpu_Vertex; // Vertices (attr 0)
in vec3 Gpu_Normal; // Normals (attr 3)
in vec4 Gpu_MultiTexCoord0; // TexCoords (attr 1 and 2)
in vec4 Gpu_MultiTexCoord1;
out vec3 vert_vout; // Vertices in view space
out vec3 normal_vout; // Normals in view space
out vec3 light_vout; // Light in view space
out vec4 projCoord_vout; // Projection coordinates (projective texcoords between -1 - 1 from camera)
void main()
{
vert_vout = vec3(Gpu_ModelViewMatrix * vec4(Gpu_Vertex, 1.0));
light_vout = vec3(Gpu_ModelViewMatrixInverse * vec4(lightPos, 1.0));
normal_vout = Gpu_NormalMatrix * Gpu_Normal;
projCoord_vout = Gpu_ProjectionMatrix * Gpu_ModelViewMatrix * vec4(Gpu_Vertex, 1.0);
gl_Position = projCoord_vout;
}