2025-10-04 21:42:04 +01:00
|
|
|
#version 460 core
|
|
|
|
|
|
|
|
|
|
#extension GL_EXT_scalar_block_layout : enable
|
|
|
|
|
|
|
|
|
|
struct Vertex {
|
|
|
|
|
vec4 p;
|
|
|
|
|
vec2 uv;
|
|
|
|
|
uint c;
|
|
|
|
|
uint pad;
|
|
|
|
|
};
|
|
|
|
|
|
2025-10-05 02:40:59 +01:00
|
|
|
layout(push_constant, row_major)
|
|
|
|
|
uniform Global {
|
|
|
|
|
mat4 proj;
|
|
|
|
|
};
|
|
|
|
|
|
2025-10-04 21:42:04 +01:00
|
|
|
layout(binding = 0, scalar)
|
|
|
|
|
readonly buffer Vertices {
|
|
|
|
|
Vertex vtx[];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
layout(location = 0) out vec2 frag_uv;
|
|
|
|
|
layout(location = 1) out vec4 frag_c;
|
2025-10-05 01:31:39 +01:00
|
|
|
layout(location = 2) out flat uint idx;
|
2025-10-04 21:42:04 +01:00
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
|
Vertex v = vtx[gl_VertexIndex];
|
|
|
|
|
|
2025-10-05 02:40:59 +01:00
|
|
|
gl_Position = proj * v.p;
|
2025-10-04 21:42:04 +01:00
|
|
|
|
|
|
|
|
frag_uv = v.uv;
|
|
|
|
|
frag_c = vec4((v.c >> 24) & 0xFF, (v.c >> 16) & 0xFF, (v.c >> 8) & 0xFF, (v.c >> 0) & 0xFF) / 255.0f;
|
|
|
|
|
frag_c = frag_c.abgr;
|
2025-10-05 01:31:39 +01:00
|
|
|
|
|
|
|
|
idx = v.pad;
|
2025-10-04 21:42:04 +01:00
|
|
|
}
|