#version 450 // Sample the glyph atlas (R = coverage 0..1) and mix the cell's bg up to its fg // by that coverage. Fully opaque: the swapchain is SDR, no blending needed. layout(set = 2, binding = 0) uniform sampler2D u_atlas; layout(location = 0) in vec2 v_uv; layout(location = 1) in vec3 v_fg; layout(location = 2) in vec3 v_bg; layout(location = 0) out vec4 o_col; void main() { float a = texture(u_atlas, v_uv).r; vec3 col = mix(v_bg, v_fg, a); o_col = vec4(col, 1.0); }