// Version du GLSL
#version 150 core

// Entrées
in vec3 in_Vertex;
in vec3 in_Normale;
in vec2 in_TexCoord0;

// Uniform
uniform mat4 pmv; // Projection * view * model
uniform mat4 m; // Matrice modèle

// Sortie
out vec3 vertex;
out vec3 normale;
out vec2 coordTexture;

// Fonction main
void main()
{
    // vertexition finale du vertex projeté en 3D
    gl_Position = pmv * vec4(in_Vertex, 1.0);

    // Envoi des coordonnées de texture au Fragment Shader
    coordTexture = in_TexCoord0;

    // Calcul vertexition pour la lumière
	normale = mat3(m) * in_Normale;
	normale = normalize( normale );

    vec4 realPosition = m * vec4(in_Vertex, 1.0);
    vertex = realPosition.xyz;
}
