Flow loop — streaklets · a bubble grows in the stream · the handedness flips

One seamless 12-second loop, three beats: particles rendered as velocity streaklets (line segments along the local flow, not dots); a glassy bubble grows mid-stream and the flow parts around it — a fresnel rim over an exactly divergence-free boundary built from the emitted vector potential (u = ramp·u + ramp′·n×A, radius is just a uniform); then the field's helicity morphs −0.9 → +0.9 by mixing two emitted fields in-shader (a mix of divergence-free fields is divergence-free), so the whole stream reverses its swirl — amber left-handedteal right-handed. Camera makes one full orbit per loop, so the loop closes. Drag to orbit, scroll to zoom.

helix-noise-gpu · streaklets · div-free boundary · 0 cpu/frame
building shaders…
⏺ record loop waits for the seam, captures exactly one 12 s loop off the canvas (UI overlays are DOM, never captured) and downloads a .webm — then ffmpeg -i loop.webm … out.gif or ship the webm/mp4 directly.