#version 330 core uniform mat4 model_matrix; uniform mat4 view_matrix; uniform mat4 projection_matrix; layout (location = 0) in vec3 position; layout (location = 1) in vec3 normal; layout (location = 2) in vec2 tex_coord; layout (location = 3) in float light; layout (location = 4) in float ambient_occlusion; out vec2 frag_tex_coord; out float frag_light; out float frag_ambient_occlusion; out vec3 surface_normal; out float depth; void main() { vec4 world_position = model_matrix * vec4(position, 1.0); vec4 view_position = view_matrix * world_position; vec4 clip_position = projection_matrix * view_position; gl_Position = clip_position; frag_tex_coord = tex_coord; frag_light = light; frag_ambient_occlusion = ambient_occlusion; surface_normal = (model_matrix * vec4(normal, 0.0)).xyz; depth = clamp((length(view_position) - 75) / 125, 0.0, 1.0); }