svulc/shd/text.vert
2025-07-14 18:11:08 +02:00

43 lines
No EOL
785 B
GLSL

#version 450
layout(push_constant, std430) uniform Pc {
//vec2 p[4]; // TL TR BL BR
vec2 p0;
vec2 p1;
vec2 p2;
vec2 p3;
vec2 bp0; // TL in atlas, BR in atlas
vec2 bp1; // TL in atlas, BR in atlas
} pc;
vec2 positions[3] = vec2[](
vec2(0, 0),
vec2(1, 0),
vec2(0, 1)
);
layout(location = 0) out vec2 uv;
void main() {
int e[] = {0,1,2,1,3,2};
vec2 pos;
int elm = e[gl_VertexIndex];
// why musn't arrays work
if(elm==0) pos = pc.p0;
if(elm==1) pos = pc.p1;
if(elm==2) pos = pc.p2;
if(elm==3) pos = pc.p3;
gl_Position = vec4(pos,0.0,1.0);
if(elm % 2 == 0) uv.x = pc.bp0.x;
else uv.x = pc.bp1.x;
if(elm / 2 == 0) uv.y = pc.bp0.y;
else uv.y = pc.bp1.y;
}