#version 330 core layout(location = 0) in vec3 position; layout(location = 1) in vec3 normal; layout(location = 2) in vec2 inTexCoords; uniform mat4 Model; uniform mat4 View; uniform mat4 Projection; out vec3 fragNormal; out vec3 worldPosition; out vec2 texCoords; void main() { gl_Position = Projection * View * Model * vec4(position, 1.0); worldPosition = vec3(Model * vec4(position, 1.0)); fragNormal = mat3(transpose(inverse(Model))) * normal; fragNormal = normalize(normal); texCoords = inTexCoords; }