From 22ed740394a4c931df4c5542035d0af0fb1335dc Mon Sep 17 00:00:00 2001 From: bbedward Date: Tue, 17 Feb 2026 10:39:32 -0500 Subject: [PATCH] ripple: small tweaks to shader --- quickshell/Shaders/frag/ripple.frag | 15 ++++++++++----- quickshell/Shaders/qsb/ripple.frag.qsb | Bin 3229 -> 3522 bytes 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/quickshell/Shaders/frag/ripple.frag b/quickshell/Shaders/frag/ripple.frag index d19db814..2552bb6b 100644 --- a/quickshell/Shaders/frag/ripple.frag +++ b/quickshell/Shaders/frag/ripple.frag @@ -26,12 +26,16 @@ float sdRoundRect(vec2 p, vec2 b, float r) { } void main() { + if (ubuf.rippleOpacity <= 0.0 || ubuf.rippleRadius <= 0.0) { + fragColor = vec4(0.0); + return; + } + vec2 px = qt_TexCoord0 * vec2(ubuf.widthPx, ubuf.heightPx) + vec2(ubuf.offsetX, ubuf.offsetY); - float aa = fwidth(length(px)) * 1.5; - float circleD = length(px - vec2(ubuf.rippleCenterX, ubuf.rippleCenterY)) - ubuf.rippleRadius; - float circleMask = 1.0 - smoothstep(-aa, aa, circleD); + float aaCircle = max(fwidth(circleD), 0.001); + float circleMask = 1.0 - smoothstep(-aaCircle, aaCircle, circleD); if (circleMask <= 0.0) { fragColor = vec4(0.0); return; @@ -40,9 +44,10 @@ void main() { float rrMask = 1.0; if (ubuf.cornerRadiusPx > 0.0) { vec2 halfSize = vec2(ubuf.parentWidth, ubuf.parentHeight) * 0.5; - float r = min(ubuf.cornerRadiusPx, min(halfSize.x, halfSize.y)); + float r = clamp(ubuf.cornerRadiusPx, 0.0, min(halfSize.x, halfSize.y)); float rrD = sdRoundRect(px - halfSize, halfSize, r); - rrMask = 1.0 - smoothstep(-aa, aa, rrD); + float aaRR = max(fwidth(rrD), 0.001); + rrMask = 1.0 - smoothstep(-aaRR, aaRR, rrD); } float mask = circleMask * rrMask; diff --git a/quickshell/Shaders/qsb/ripple.frag.qsb b/quickshell/Shaders/qsb/ripple.frag.qsb index 9dd21dc4b026b50e437a6c5b5f24fd0de582c9c5..5b5595ad41fb59455c82e2f07d797315af298eee 100644 GIT binary patch literal 3522 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 PwtkJpdGh)v-o)DmJ!56Z