#version 450 layout(location = 0) in vec4 aPosition; layout(location = 1) in vec4 aNormal; layout(location = 2) in vec2 aTexCoord; layout(set = 0, binding = 0, std140) uniform SceneData { mat4 gProjectionMatrix; mat4 gViewMatrix; mat4 gModelMatrix; vec4 gCameraPosition; vec4 gLightDirection; vec4 gLightColor; vec4 gAmbientColor; }; layout(location = 0) out vec3 vWorldPosition; layout(location = 1) out vec3 vWorldNormal; layout(location = 2) out vec2 vTexCoord; void main() { vec4 worldPosition = gModelMatrix * aPosition; vec4 viewPosition = gViewMatrix * worldPosition; gl_Position = gProjectionMatrix * viewPosition; vWorldPosition = worldPosition.xyz; vWorldNormal = mat3(gModelMatrix) * aNormal.xyz; vTexCoord = aTexCoord; }