#version 330 layout(location = 0) in vec3 aPosition; layout(location = 1) in vec3 aNormal; // Solid color input from application // Color to output to fragment shader out vec3 vNormal; // Model View Projection matrix found by P * V * M //uniform mat3 uModelInverseTransposed; uniform mat4 uModel; uniform mat4 uView; uniform mat4 uProjection; void main() { gl_Position = uProjection * uView * uModel * vec4(aPosition, 1.0); // This isn't a shader we plan to use heavily, it's useful for testing normals // + We can see what the value of normals are on the object based on color vNormal = mat3(transpose(inverse(uModel))) * aNormal; // vNormal = uModelInverseTransposed * aNormal; // vNormal = aNormal; // This is possible without the additional uniform // Or you could find this on the GPU using the uModel matrix }