interactive.js becomes a multi-mode engine sharing camera, motion grid,
gradient/centroid tracking and the mouse fallback. New renderers: point/line
sprites (mirror/swarm/cloth/pops) and a ping-pong trail FBO (painting).
fluid.js gains a 'touch' emitter mode fed by motion splats from the camera.
Mirror mode reforms the custom SVG/image if loaded, else a DJ LUZA wordmark.
UNPACK_ALIGNMENT set to 1 for non-multiple-of-4 single-channel uploads.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New 'Interattivo Palle' family (interactive.js): frame-differencing motion map
from the webcam, ball physics (push-away forces, collisions, beat kicks),
palette-tinted rendering with motion mist. Camera is requested lazily and
released when switching preset; mouse/touch fallback when unavailable.
Excluded from Auto VJ so the camera never turns on by itself.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
From the reference video: bright crackling core, organic branching
lightning filaments (ridged fbm in mirrored polar space, slowly rotating
to hide the seam), two layers of radial particle streaks flowing outward,
nebula haze. Bass pumps filaments and outflow speed, beat punches the
core, treble twinkles the particles. Family index 43 (fieldRGB path).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New fieldRGB path in the uber-shader (families 34+): scenes return full
colour instead of a palette-mapped scalar, with the palette tinting the
scene (hue/sat/contrast still applied via colorizeRGB). Sky with drifting
fbm clouds and sun; aurora curtains over twinkling star dots (stars light
a dot inside the grid cell, not the whole cell); perspective ocean with
crests and sun glitter; parallax mountain ridgelines at sunset; spiral
nebula; raymarched morphing solid (box/octahedron/sphere, palette-lit,
beat-pumped); synthwave grid with striped retro sun. Audio: bass drives
sun glow/waves/grid speed, treble twinkles, beat pumps. Scenic families
get a gentler bass-zoom so the horizon doesn't pump. Append-only family
indices (saved presets don't shift). 714 new presets.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same solver, different figures via e.fluidMode: 'fire' bottom jets with
buoyancy — implemented as relaxation toward a target updraft (an additive
force integrates to the velocity clamp and turns flames into a wall) plus
height-scaled dye dissipation so flames die as they rise; 'ring' emitters
on a spinning circle with radial beat shockwaves; 'vortex' two counter-
rotating stirrers; 'wave' a travelling sine curtain. Stationary emitters
inject a fraction of the stir force (repeated adds at one spot saturate).
408 new presets.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Stable-fluids solver (fluid.js) on ping-pong half-float framebuffers:
semi-Lagrangian advection, vorticity confinement (clamped — unbounded
confinement overflows half-float and kills the field), 22 Jacobi pressure
iterations, audio-driven dye/force splats. Three wandering emitters inject
palette-coloured dye (brightness-normalized so dark palette entries stay
vivid); bass drives injection and stirring, beats fire directional bursts,
treble adds swirl. Universal modifiers map onto the sim: warp = vorticity,
speed = sim speed (brightness is speed-normalized), sym = kaleidoscope with
a wedge that rotates via rotSpeed, contrast/invert on display.
The Visualizer delegates to FluidSim when the preset has isFluid (flag is
always present so Object.assign merges can't leave it stale). 102 new
presets (17 palettes x 6 variants).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>