#version 330 core layout(location = 0) in vec3 vertex_position; layout(location = 1) in vec3 vertex_normal; layout(location = 2) in vec2 vertex_tex_coord; uniform mat4 model_matrix; uniform mat4 view_matrix; uniform mat4 proj_matrix; uniform vec3 camera_position; out vec3 position_pass; out vec3 camera_position_pass; out vec3 normal_pass; out vec2 uv_pass; void main() { mat4 mvp = proj_matrix * view_matrix * model_matrix; vec3 world_position = (model_matrix * vec4(vertex_position, 1.0)).xyz; gl_Position = mvp * vec4(vertex_position, 1.0); normal_pass = normalize((model_matrix * vec4(vertex_normal, 0.0)).xyz); position_pass = world_position; camera_position_pass = (inverse(view_matrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz; uv_pass = vertex_tex_coord; }