#version 430 layout(location = 0) in vec3 vertex_position; layout(location = 1) in vec3 vertex_normal; layout(location = 2) in mat4 model_to_world; layout(location = 0) uniform mat4 world_to_projection; out vec3 fragment_position; out vec3 fragment_normal; void main() { vec4 model_position = model_to_world * vec4(vertex_position, 1.0); vec4 model_normal = model_to_world * vec4(vertex_normal, 0.0); gl_Position = world_to_projection * model_position; fragment_position = model_position.xyz; fragment_normal = model_normal.xyz; }