47259c39793f | atagen | 2026-10-17 10:13 UTC | 1 | // Coverage of the fragment under the push constant clip, a rounded rect in |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 2 | // framebuffer pixels with radii TL, TR, BR, BL. A ring keeps only the band |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 3 | // that wide inside the edge, for borders. |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 4 | float rounded_box(vec2 p, vec2 half_size, float r) { |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 5 | vec2 q = abs(p) - half_size + r; |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 6 | return length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - r; |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 7 | } |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 8 | |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 9 | float clip_alpha() { |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 10 | if (pc.clip.z <= 0.0) { |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 11 | return 1.0; |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 12 | } |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 13 | vec2 half_size = pc.clip.zw * 0.5; |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 14 | vec2 p = gl_FragCoord.xy - (pc.clip.xy + half_size); |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 15 | float r = p.x < 0.0 ? (p.y < 0.0 ? pc.radii.x : pc.radii.w) |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 16 | : (p.y < 0.0 ? pc.radii.y : pc.radii.z); |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 17 | float a = clamp(0.5 - rounded_box(p, half_size, r), 0.0, 1.0); |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 18 | float ring = pc.ring.x; |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 19 | if (ring > 0.0) { |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 20 | float inner = rounded_box(p, half_size - ring, max(r - ring, 0.0)); |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 21 | a *= clamp(0.5 + inner, 0.0, 1.0); |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 22 | } |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 23 | return a; |
47259c39793f | atagen | 2026-10-17 10:13 UTC | 24 | } |