0 fps
// DOOM Fire — Fabien Sanglard's algorithm for each pixel (x, y) from top to bottom-1: decay = rand() & 1 // 0 or 1 src = pixels[(y+1)*W + x] // pixel below dst = (x - decay + W) % W // drift left pixels[y*W + dst] = max(0, src - decay) // bottom row initialized to intensity (0–36) // click canvas to cool down local area