layout(location = 0) in vec3 inPosition; layout(location = 2) in vec2 inTexCoords; out VS_OUT { vec2 uv; vec3 fragpos; } vs_out; out gl_PerVertex { vec4 gl_Position; }; layout(binding = 0) uniform UniformBufferObject { mat4 projection, view, model; vec4 lightPosition; float farPlane; } ubo; void main() { gl_Position = ubo.projection * ubo.view * ubo.model * vec4(inPosition, 1.0); vs_out.uv = inTexCoords; vs_out.fragpos = vec3(ubo.model * vec4(inPosition, 1.0)); }