#version 420 in layout(location=0) vec3 Model_Position; in layout(location=1) vec4 in_color; in layout(location=2) vec2 Texture_UV; in layout(location=3) vec3 Model_Normal; uniform mat4 Matrix_totalTransform; uniform mat4 Matrix_modelToWorld; uniform vec3 lightPosition[4]; uniform vec3 World_eyePosition; out vec2 Fragment_UV; out vec3 World_Normal; out vec4 Fragment_Color; out vec3 toLightVector[4]; out vec3 toEyeVector; void main() { vec3 World_Position = vec3(Matrix_modelToWorld * vec4(Model_Position, 1.0)); for(int i = 0; i < 4; i++) { /* vector que apunta hacia la luz*/ toLightVector[i] = lightPosition[i] - World_Position; } /* Vector hacia el ojo*/ toEyeVector = normalize(World_eyePosition - World_Position); gl_Position = Matrix_totalTransform * vec4(Model_Position, 1.0); /*We add a 0 on the vec4 so we can remove the translation from the matrix (WE DONT WANT THE NORMAL TO BE TRANSLATED) */ World_Normal = vec3(Matrix_modelToWorld * vec4(Model_Normal, 0.0)); Fragment_UV = vec2(Texture_UV.x, 1 - Texture_UV.y); /*Invert y axis*/ }