#version 450 #extension GL_ARB_shader_draw_parameters : enable struct UniformData { mat4 projection; mat4 view; }; layout(push_constant) uniform p_constants_t { uint frame; } p_constants; layout(binding = 0) uniform u_data_t { UniformData frame[4]; } u_data; layout(location = 0) in vec3 i_pos; layout(location = 1) in vec2 i_uv; layout(location = 2) in vec3 i_normal; layout(location = 0) out flat int o_id; layout(location = 1) out vec2 o_uv; void main() { gl_Position = u_data.frame[p_constants.frame].projection * u_data.frame[p_constants.frame].view * vec4(i_pos, 1.0); o_id = gl_DrawIDARB; o_uv = i_uv; }