#extension GL_EXT_buffer_reference : require #extension GL_EXT_scalar_block_layout : require #define SHAPE_RECT 0 #define SHAPE_ELLIPSE 1 #define SHAPE_TRIANGLE 2 #define SHAPE_TEXT 3 struct Shape2D { vec2 center; vec2 halfSize; vec4 color; vec4 uvRect; vec2 p0; vec2 p1; vec2 p2; float rotation; float outline; float cornerRadius; uint type; uint textureId; uint samplerId; }; layout (buffer_reference, scalar) readonly buffer Shape2DBuffer { Shape2D shapes[]; }; layout (push_constant, scalar) uniform Shape2DPushConstants { mat4 projection; Shape2DBuffer shapeBuffer; } pcs;