caustics
Components Templates Boilerplates Docs Field Notes
Get Everything →
Fluid Canvas @caustics/fluid-canvas
Motion 0.70×
Fluid simulation speed — slows or energizes the dye/flow without touching dissipation or curl. Agents have their own Speed in the Agents panel.
Seed random
Lock a seed for a reproducible composition — the same seed reproduces the same canvas on a fixed timestep. Apply recomposes from a clean slate; ↻ rolls a fresh random seed. Empty = a new look each load.
Preset gradient-flow
A seamless pattern tiled behind the fluid — scale, rotate, tile, and pan it independently. Regenerates as you change the colour.
Agent colours preset
Edit any swatch to switch to this custom palette. Each agent samples one colour for life.
Paint colours preset
Colour of the dye you paint by dragging (and the ambient auto-splats). Edit a swatch to use a custom palette; cycle speed moves through it (0 holds one colour).
Post-processing
Tames blown-out white cores (hue preserved). 0 = raw hot-white look; 1 = fully capped to the saturated colour. Applies before bloom/sunrays.
Strength = glow amount; threshold = how bright dye must be before it blooms (higher = only the densest cores glow). Keep strength modest + threshold high for a tasteful halo.
Colour grade finish
Tone finishing over the whole frame: exposure & contrast shape tone, saturation pulls colour back (0 = greyscale) or pushes it, vignette seats the frame. Hue drift slowly rotates the whole palette (OKLab, luminance-safe) so a long-running canvas breathes — 0 freezes it.
Grain
Film/print texture. Noise picks the character; size scales its features; motion animates it (0 = a frozen still texture); chroma blends monochrome → per-channel colour speckle.
Gradient map
Off. Toggle on to recolour the frame through a 2–5 stop gradient (duotone / tritone).
Second dye
Off. A second, independently-tinted pigment over the primary dye — a two-ink duotone.
Flow colour
Off. Make the current visible — dye colour that flows along the velocity field.
Iridescence
Off. A view-dependent thin-film sheen (oil-slick / beetle-shell) on dense dye.
Stylize none
Feedback / echo
Off. The temporal instrument — Droste zooms, feedback tunnels, long echo trails. Heavier than the other effects; try Amount 0.7, zoom+rotate.
Symmetry
Off. The kaleidoscope — toggle on and every stroke becomes an N-fold mandala. Try 8 segments over the orbit flow.
Tiling
Off. Wallpaper repeat — a repeating ink textile. Pair with Symmetry for a rose-window wallpaper.
Polar warp
Off. The kaleidoscope's geometric sibling — swirl, tunnel, twist or bulge the whole field. Try Spiral over 8-fold symmetry.
Domain warp
Off. Marble, melt, or heat-haze any preset. Try Amount 0.02, Source "velocity" over a lively flow for liquid glass.
Text / logo mask
Off. Confine the fluid to a word or emit ink from it — "your headline made of living ink". Toggle on and type.
Caustics
Off. The signature water-light look — toggle on for area-ratio caustics rendered from the dye.
Accumulation
Off. The self-painting canvas — toggle on and the moving dye + agent trails build a persistent painting.
Brush & medium round
Stroke stretch elongates deposits along their motion — calligraphic gesture instead of circular dabs (1 = round). Wet edge darkens pigment where a wash meets clean ground, the watercolour tell; strongest on light backgrounds.
Interaction paint
Physics
Flow field
A continuous field-level current — the composition gets a direction instead of being splat-soup. Drift for silk banners, vortex/orbit for circulation, turbulence for weather. Deterministic under a seed; 0° points right, 90° up.
Buoyancy
Off. Matter with weight — toggle on so dense dye rises like smoke (or sinks like ink).
Agents flock
How hard agents push the fluid. 0 = pure dye (calligraphic); higher = turbulent stirring.
Trail decay is the shared dye-fade (same knob as Physics → Density dissipation). 0 = trails persist forever; higher = quicker fade.
Force = how hard the cursor pushes; radius = how far its influence reaches. Now independent.
Layout elements none
Drop real website chrome onto the canvas — the boids steer around it (avoid), circle it (orbit), or drift toward it (attract). Drag a chip on the stage to reposition it; the swarm responds live. This is the bridge from sandbox to a fluid that reacts to your actual UI.
Save artwork PNG / clip
PNG saves the exact current frame at full canvas resolution. Record captures a live WebM of the canvas — start it, perform, stop to download. The preset + seed are stamped into the filename, so with the seed locked the artwork is reproducible.
Export config JSON
Copies the full current look — engine props (paste straight into mount()), the agent swarm, the texture, and the colour choices — to your clipboard as JSON. Paste it back to share an exact configuration.
Import config load JSON
Restores a full look from JSON — upload a file or paste an exported config (from the Export panel above), then hit Load. Every control, the agent swarm, the texture, and the paint palette are applied and the canvas remounts. Missing fields keep their current value.
DOM bindings — hover / click these
Each button has data-fluid-hover or data-fluid-click attributes. The engine scans them on mount and emits fluid effects whenever you interact. Buttons live in this side drawer (outside the canvas) — the engine clamps the splat position to the canvas edge nearest the button, so you'll see the effect appear at the left boundary of the stage as you hover.
Buy · $69 The Everything Bundle