shaders/cell.frag
Ref: Size: 633 B
#version 450
layout(binding = 0) uniform sampler2D glyph_atlas;
layout(push_constant) uniform PushConstants {
vec2 viewport_size;
vec2 cell_size;
vec2 coverage_params;
} pc;
layout(location = 0) in vec2 in_uv;
layout(location = 1) in vec4 in_fg;
layout(location = 2) in vec4 in_bg;
layout(location = 0) out vec4 out_color;
float shape_coverage(float alpha) {
float curved = pow(alpha, pc.coverage_params.x);
return clamp(curved + pc.coverage_params.y, 0.0, 1.0);
}
void main() {
float alpha = texture(glyph_atlas, in_uv).r;
alpha = shape_coverage(alpha);
out_color = mix(in_bg, in_fg, alpha);
}