demo 15 of 17

💨smoke

Ink billowing through an invisible current.

Recordings

Both captures below are real iTerm2 sessions running the demo — the same binary renders at pixel resolution where the terminal speaks the kitty graphics protocol, and as ASCII cells everywhere else.

kitty graphics — smoke-gfx

A density field is advected by semi-Lagrangian backtrace through a procedural curl-noise flow plus buoyancy, dissipating as it climbs; alpha follows density so the smoke drifts over your terminal. c swaps grey smoke for coloured ink.

smoke in kitty graphics mode
smoke — kitty pixel mode
ASCII cells — smoke

Density mapped to a ·:░▒▓█ ramp and the dye colour.

smoke in ASCII cell mode
smoke — ASCII cell mode

Controls

KeyAction
spacepuff
mouse clickinject dye
atoggle the source
ccycle dye colour
+ / -buoyancy
q / Escquit

Tuning env vars use the SMOKE_* prefix — e.g. SMOKE_MAXDIM=1024 for sharper frames, SMOKE_CELLS=1 to force cell rendering even on kitty terminals. See the overview for the full tuning table.