blob: d0967309923a5a3238f3e83bad401738b79e33e0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#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;
// stb_truetype is unhinted. A small coverage lift counters its grey edge
// halo without turning the atlas into hard-edged bitmap text.
a = pow(a, 0.8);
vec3 col = mix(v_bg, v_fg, a);
o_col = vec4(col, 1.0);
}
|