summaryrefslogtreecommitdiff
path: root/shaders/post/ripple.glsl
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 16:44:51 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commita007457cb007b03f310bca55c339e8cd5d9baafc (patch)
tree31e57644c6df2eef04fb3c2a200482571c6e6857 /shaders/post/ripple.glsl
parent1ed34e1538f45daecc2c8a551dc0fb7aba5f3f54 (diff)
downloadpardes-a007457cb007b03f310bca55c339e8cd5d9baafc.tar.gz
pardes-a007457cb007b03f310bca55c339e8cd5d9baafc.zip
Ripple and Glitch are gone; Crt stays
The user tried them live and wants them removed entirely: the builtins, their levels, config keys and leader paths (tR, tg), their slots in the built-in chain, their shaders (source and prebuilt), EffectCode paths, and on macOS their scene flags (pardes.h), the Metal kernel's coordinate warps and the Swift pointer mapping that mirrored them. Docs say so (decision 8 in docs/render-pipeline.md); config.md documents Crt's levels, Shader and ShaderAnimation instead. Shared files touched: macos.zig (flags). Not touched: pardes.zig, Messages.zig, mouse.zig, gui.zig, detached/*.
Diffstat (limited to 'shaders/post/ripple.glsl')
-rw-r--r--shaders/post/ripple.glsl52
1 files changed, 0 insertions, 52 deletions
diff --git a/shaders/post/ripple.glsl b/shaders/post/ripple.glsl
deleted file mode 100644
index 3236d339..00000000
--- a/shaders/post/ripple.glsl
+++ /dev/null
@@ -1,52 +0,0 @@
-// Ripple: the page as a still pool a slow swell crosses. Rings travel out
-// from the middle of the window at a fixed speed in pixels, so they look
-// the same at any size and frame rate; at the default level the displacement
-// is at most a couple of pixels, so text stays readable, and it eases in over its first half
-// second instead of snapping on. Each ring catches the light a little on its
-// rising side, in linear light, and the result is dithered so the shading
-// never bands. It is a Shadertoy file: pardes puts its prefix before it.
-
-const float TAU = 6.28318530718;
-const float EASE_IN = 0.5; // seconds
-
-// Each at levels 1, 2 and 3 (`Ripple 1`..`Ripple 3`); 2 is the default.
-float wavelengthPx() { return pardesByLevel(170.0, 150.0, 120.0); }
-float speedPx() { return pardesByLevel(40.0, 55.0, 80.0); } // outward, per second
-float amplitudePx() { return pardesByLevel(1.2, 2.2, 5.0); }
-float shade() { return pardesByLevel(0.02, 0.035, 0.09); } // light on a slope, linear
-float reachEnd() { return pardesByLevel(0.85, 0.95, 1.3); } // how far out it dies away
-
-vec3 toLinear(vec3 c) {
- return mix(pow((c + 0.055) / 1.055, vec3(2.4)), c / 12.92, lessThanEqual(c, vec3(0.04045)));
-}
-
-vec3 toSrgb(vec3 c) {
- c = max(c, vec3(0.0));
- return mix(1.055 * pow(c, vec3(1.0 / 2.4)) - 0.055, c * 12.92, lessThanEqual(c, vec3(0.0031308)));
-}
-
-float ign(vec2 p) {
- return fract(52.9829189 * fract(dot(p, vec2(0.06711056, 0.00583715))));
-}
-
-void mainImage(out vec4 fragColor, in vec2 fragCoord) {
- vec2 size = iResolution.xy;
- vec2 center = 0.5 * size;
- vec2 offset = fragCoord - center;
- float radius = length(offset);
- float reach = 0.5 * length(size);
- // Strongest a third of the way out, fading to nothing at the middle
- // and at the edges, so the window's frame never wobbles.
- float envelope = smoothstep(0.0, 0.18, radius / reach) * (1.0 - smoothstep(0.35, reachEnd(), radius / reach));
- float ease = smoothstep(0.0, EASE_IN, iTime);
- float phase = (radius - iTime * speedPx()) * TAU / wavelengthPx();
- float height = sin(phase);
- float slope = cos(phase);
- vec2 dir = offset / max(radius, 1e-3);
- vec2 moved = fragCoord + dir * height * amplitudePx() * envelope * ease;
-
- vec4 s = texture(iChannel0, moved / size);
- vec3 col = toLinear(s.rgb) * (1.0 + shade() * slope * envelope * ease);
- vec3 srgb = toSrgb(col) + (ign(fragCoord + float(iFrame % 64) * 5.588238) - 0.5) / 255.0;
- fragColor = vec4(clamp(srgb, 0.0, 1.0), s.a);
-}