61 lines
970 B
Plaintext
61 lines
970 B
Plaintext
@vs vs
|
|
in vec2 a_pos;
|
|
in vec2 a_uv;
|
|
|
|
struct letter {
|
|
vec2 pos;
|
|
vec2 wh;
|
|
vec2 uv;
|
|
vec2 uv_size;
|
|
vec4 color;
|
|
};
|
|
|
|
readonly buffer ssbo {
|
|
letter ls[];
|
|
};
|
|
|
|
out vec2 uv; // Normalized UV, from 0 to 1 on the letter, for special effects
|
|
out vec2 fuv; // This is the UV given to get the correct letter from the texture
|
|
out vec4 color0;
|
|
|
|
vec2 pos;
|
|
|
|
uniform mat4 vp;
|
|
|
|
@include_block vert
|
|
|
|
void main()
|
|
{
|
|
letter charData = ls[gl_InstanceIndex];
|
|
fuv = charData.uv + vec2(a_pos.x*charData.uv_size.x, charData.uv_size.y - a_pos.y*charData.uv_size.y);
|
|
uv = a_uv;
|
|
color0 = charData.color;
|
|
pos = charData.pos+(a_pos*charData.wh);
|
|
vert();
|
|
gl_Position = vp * vec4(pos, 0.0, 1.0);
|
|
}
|
|
@end
|
|
|
|
@fs fs
|
|
in vec2 uv;
|
|
in vec2 fuv;
|
|
in vec4 color0;
|
|
|
|
out vec4 color;
|
|
|
|
texture2D text;
|
|
|
|
@sampler_type smp nonfiltering
|
|
sampler smp;
|
|
|
|
@include_block frag
|
|
|
|
void main()
|
|
{
|
|
float lettera = texture(sampler2D(text,smp),fuv).r;
|
|
frag();
|
|
color.a = lettera;
|
|
}
|
|
@end
|
|
|
|
@program text vs fs |