#version 300 es precision highp float; // highp: exact UV into the 2048 glyph atlas (mediump fp16 rounds on mobile/WASM) in vec2 vTexCoord; in vec4 vColor; uniform mediump sampler2D u_tex; // R8 glyph coverage (anti-aliased alpha) — NORMAL (non-SDF) text out vec4 fragColor; void main() { float coverage = texture( u_tex, vTexCoord ).r; fragColor = vec4( vColor.rgb, vColor.a * coverage ); }