fps · grid · 0 particles
REC 0 frames
100%

Fluid Mixer

Left-drag paints · right-drag erases · scroll to zoom · middle-drag to pan.

Colour

#ffffff

Simulation

0
1
1
0
0
0
.22
.05
1
20
0
60
120
16

Solvers

Jacobi
RB-GS
Pressure
Attract φ
Diffusion
Swaps live. RB-GS (red-black Gauss-Seidel) is a stronger smoother: it kills the residual that streaks buoyancy in fewer iterations. Cost is 2 passes per iteration, so drop the iteration counts when you switch. φ runs only when Attract ≠ 0; Diffusion only with Viscous diff on and viscosity painted.
Solver stencil
Which neighbours every solver averages (pressure, φ, diffusion). All four arrows = normal 5-point. Kill an axis for banding and directional smear; light the corners for a diagonal (corners only) or isotropic (all eight) solve; centre = damping. Starve it fully and the solve just freezes. Diffusion drives dye smear, pressure drives flow. Outer ring (distance-2) adds wide coupling for a smoother, faster solve.

Brush

20
220
.7
0
1

Turbulence

0
0
.4
.03
3

Attraction

0
0

Particles

3000
1.2
0
.055
.45
0

Image map

1
1
1
Fits the longest side to the grid, centred. Each mode keeps its last loaded image, so you can stack one of each (RGB colour + viscosity mask + density). Per-mode gain scales the values on load. Reset · keep maps clears the sim then re-applies every stored map at current gain; the main Reset wipes maps too. Density uses mid-grey as neutral. Maps load at the current grid res.

Output

1
1
1
4
16-bit RGBA PNGs at grid resolution. Bake tonemap off = raw linear (best for 3D); on = exposure + Reinhard baked in (matches the view, never clips). Stop = frames encode in parallel across CPU cores, zip streams straight to disk (Chrome/Edge save dialog) or downloads as a blob elsewhere. Recording itself stays GPU-only.