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-handed ↔
teal right-handed. Camera makes one full orbit per loop, so the
loop closes. Drag to orbit, scroll to zoom.
ffmpeg -i loop.webm … out.gif or ship the webm/mp4 directly.