#version 460 core layout(location = 0) in vec3 inPosition; layout(location = 1) in vec3 inNormal; layout(location = 2) in vec2 inUV; layout(location = 0) out vec3 outFragPos; layout(location = 1) out vec4 outShadowPos; layout(location = 2) out vec3 outNormal; layout(location = 3) out vec2 outUV; layout(push_constant) uniform PushConstants { mat4 vp, lightSpace; } pushConstants; const mat4 biasMat = mat4( 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.5, 0.5, 0.0, 1.0); void main() { gl_Position = pushConstants.vp * vec4(inPosition, 1.0); outFragPos = inPosition; outShadowPos = (biasMat * pushConstants.lightSpace) * vec4(inPosition, 1.0); outNormal = inNormal; outUV = inUV; }