#version 450 layout(location = 0) out vec3 frag_normal; layout(location = 1) out vec4 light_pos; layout(push_constant) uniform vps_t { mat4 vp; mat4 light_vp; } vps; vec2 vertices[4] = vec2[]( vec2(-1, -1), vec2(-1, 1), vec2(1, 1), vec2(1, -1) ); void main() { const vec2 pos = 4 * vertices[gl_VertexIndex]; const vec4 world_pos = vec4(pos.x, 0, pos.y, 1); gl_Position = vps.vp * world_pos; frag_normal = vec3(0, 1, 0); light_pos = vps.light_vp * world_pos; }