shaders/cell.vert
Ref: Size: 928 B
#version 450
layout(push_constant) uniform PushConstants {
vec2 viewport_size;
vec2 cell_size;
} pc;
layout(location = 0) in vec2 in_unit_pos;
layout(location = 1) in vec2 in_cell_pos;
layout(location = 2) in vec2 in_glyph_size;
layout(location = 3) in vec2 in_glyph_bearing;
layout(location = 4) in vec4 in_uv_rect;
layout(location = 5) in vec4 in_fg_color;
layout(location = 6) in vec4 in_bg_color;
layout(location = 0) out vec2 out_uv;
layout(location = 1) out vec4 out_fg;
layout(location = 2) out vec4 out_bg;
void main() {
vec2 cell_origin = in_cell_pos * pc.cell_size;
vec2 glyph_origin = cell_origin + in_glyph_bearing;
vec2 pixel_pos = glyph_origin + in_unit_pos * in_glyph_size;
vec2 ndc = (pixel_pos / pc.viewport_size) * 2.0 - 1.0;
gl_Position = vec4(ndc, 0.0, 1.0);
out_uv = mix(in_uv_rect.xy, in_uv_rect.zw, in_unit_pos);
out_fg = in_fg_color;
out_bg = in_bg_color;
}