roleplay/client/shader_src/ui_rect.vert

40 lines
746 B
GLSL

#version 450
#extension GL_EXT_buffer_reference : require
2024-10-17 17:31:13 -06:00
struct Rect {
vec3 pos;
2024-10-17 17:31:13 -06:00
vec2 size;
vec4 color;
};
layout(std430, buffer_reference) readonly buffer RectList {
Rect r[];
};
layout(std430, buffer_reference) readonly buffer ScreenInfo {
mat4 bounds;
};
2024-10-17 17:31:13 -06:00
layout(std430, push_constant) uniform PushConstant {
ScreenInfo screen;
2024-10-17 17:31:13 -06:00
RectList rects;
} pc;
layout(location = 0) out vec4 fragColor;
const vec2 square[6] = {
vec2(0.0, 0.0),
vec2(1.0, 0.0),
vec2(0.0, 1.0),
vec2(1.0, 0.0),
vec2(1.0, 1.0),
vec2(0.0, 1.0),
};
void main() {
2024-10-17 17:31:13 -06:00
Rect rect = pc.rects.r[gl_InstanceIndex];
gl_Position = pc.screen.bounds * vec4(vec3(square[gl_VertexIndex] * rect.size, 0.0) + rect.pos.xyz, 1.0);
2024-10-17 17:31:13 -06:00
fragColor = rect.color;
}