#version 450 // per vertex input layout(location = 0) in vec3 position; layout(location = 1) in vec4 color; // uniforms layout(set = 0) uniform Model { mat4 model_matrix; } u_model; layout(set = 1) uniform Light { mat4 view_projection_matrix; } u_light; layout(push_constant) uniform PushConstantData { mat4 view_projection_matrix; // Camera view-projection matrix } pc; // ouput layout(location = 0) out vec4 out_pos_lightspace; layout(location = 1) out vec4 out_color; void main() { vec4 world_pos = u_model.model_matrix * vec4(position, 1.0); out_pos_lightspace = (u_light.view_projection_matrix * world_pos) * vec4(0.5, 0.5, 1, 1) + vec4(0.5, 0.5, 0, 0); out_color = color; gl_Position = pc.view_projection_matrix * world_pos; }