#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;
}