#version 330 core layout(location = 0) in vec3 aPos; // Vertex position layout(location = 1) in vec2 aUV; // Texture UV coordinate (optional) uniform mat4 uMVP; // Combined Model-View-Projection matrix out vec2 vUV; // Pass UV to the fragment shader void main() { vUV = aUV; gl_Position = uMVP * vec4(aPos, 1.0); }