#version 330 core
// 顶点输入（来自 VBO）
layout(location=0) in vec3 aPos; // 顶点位置（当前我们直接当作“世界坐标”来用）
layout(location=1) in vec3 aN;   // 法线（当前没用到，先保留）

// uMVP = Projection * View * Model
// 把顶点从“世界坐标”变换到“裁剪空间（clip space）”，OpenGL 用 gl_Position 来完成屏幕投影
out vec3 vWorldPos;
out vec3 vWorldNormal;

uniform mat4 uMVP;

void main() {
    // Model is identity in this project; treat vertex data as world space.
    vWorldPos = aPos;
    vWorldNormal = aN;
    gl_Position = uMVP * vec4(aPos, 1.0);
}
