a73x

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;
}