43 lines
No EOL
785 B
GLSL
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;
|
|
} |