#version 330 core layout(location=0) in vec3 position; layout(location=1) in vec3 normal; layout(location=2) in vec2 uv; uniform mat3 normal_mat; uniform mat4 model; layout (std140) uniform Common { mat4 projection; mat4 view; vec3 camera_position; }; // interface block out VS_OUT { vec3 vert_normal; vec3 frag_position; vec2 uv_coords; } vs_out; void main() { vs_out.frag_position = vec3(model * vec4(position, 1.0)); vs_out.vert_normal = normal_mat * normal; vs_out.uv_coords = uv; gl_Position = projection * view * model * vec4(position, 1.0); };