#version 330 core uniform mat4 u_mvp; layout (location = 0) in vec3 position; layout (location = 1) in vec3 normal; layout (location = 2) in vec2 texcoord; out vec3 v_position; out vec3 v_normal; out vec3 v_proj_normal; out vec2 v_texcoord; out float v_id; void main() { v_position = position; v_normal = normal; v_proj_normal = vec4(u_mvp * vec4(normal, 1.0)).xyz; v_texcoord = texcoord; v_id = gl_VertexID; gl_Position = u_mvp * vec4(v_position, 1.0); }