#version 330 core layout(location=0) in vec3 aPos; layout(location=1) in vec3 aNormal; uniform mat4 View; uniform mat4 Model; uniform mat4 Projection; out vec3 Normal; out vec3 Position; void main() { // @note: This is the calculation for getting the normal vector // one that is unaffected by non-uniform scaling that is. // look at the lighting chapter in learnopengl.com to understand this more Normal = mat3(transpose(inverse(Model))) * aNormal; Position = vec3(Model * vec4(aPos, 1.0)); gl_Position = Projection * View * Model * vec4(aPos, 1.0); };