Blur reveal
Coloured panels in turn, each short line dissolving in out of a blur and drifting into focus.
A short lowercase line on a bold coloured panel, dissolving in from a cloudy blur.npx skills add https://design.how/vault/blur-revealInstalls the template, the brief and a check script as one skill.
What it is
Six panels take turns. Each one is a single bold background with a short lowercase line set across it in a contrasting colour, such as gold on pine green or hot pink on near black. The line never slides or types on. It condenses out of a haze, holds for 900ms, dissolves back out, and the background cross-fades over 320ms into the next panel while the next line starts to form.
The reveal is one fragment shader over the line drawn to a canvas texture. Each pixel gets a front position from a domain-warped four-octave noise field mixed 70 to 30 with its distance from a centre that wanders per panel. A pixel shows once the reveal progress passes its front position, eased over a wide band of 0.34 either side, so the edge is a soft cloud that moves through the inside of each letter, never a wipe across the line. A per-panel seed shifts the field, so no two cycles dissolve the same way.
Blur sits only at the front. A 17-tap ring blur, up to 18 texels wide, is strongest where the front is and falls to zero behind it, and the unresolved part is sampled a little larger and nudged toward the centre, so letters drift into place as they sharpen. A wide-blurred copy of the glyph alpha adds a faint halo in the panel's text colour along the front, gone by the time the line finishes.
Progress is not an eased curve. A critically damped spring pulls it toward 1 to reveal and toward 0 to leave, slightly stiffer on the way out, so the motion settles the same at any frame rate.
How it works
- Draw the line once per panel to a 2D canvas at the capped pixel ratio, sized to fit on one line at most 86% of the card's width, and upload it as a texture.
- In the fragment shader, give each pixel a front position from domain-warped fbm noise mixed with a radial distance, offset by a per-panel seed.
- Reveal each pixel with a smoothstep band around the progress, and blur it with a ring blur whose radius is largest at the front and zero behind it.
- Add a soft glow in the text colour along the front from a wide-blurred copy of the glyph alpha, fading out as the line completes.
- Drive progress with a critically damped spring toward 1, hold, then toward 0, and swap panels when the line is gone.
- Stop the loop on webglcontextlost, and on destroy delete the program, buffer and texture and lose the context.
- Under reduced motion, draw the first panel once with its line fully resolved.
What you can change
PANELS(six lines, each with bg and fg): The lines and their colour pairs, in order.HOLD_MS(900): How long a resolved line holds before it leaves.BG_MS(320): The background cross-fade between panels.MAX_BLUR(18): The blur radius at the front, in texels.K_IN, K_OUT(42, 60): Spring stiffness for the reveal and the exit. Higher is snappier.