Hardware Heritage
The "Doom Fire" effect is a classic example of cellular automata in computer graphics. First popularized by the PlayStation port of DOOM, it uses a simple set of propagation rules to simulate the organic, flickering motion of flames using a low-resolution buffer and a palette-indexed heat map.
PC Origin
Famously used in the PSX port of DOOM, this algorithm relied on a 2D array of heat values. Each frame, values were averaged from the pixel below and decayed, creating the upward lick of flames.
Amiga Blitter
While CPU-heavy on the 68000, Amiga coders often used the Blitter to "smear" bitplanes upward with a 50% mask, simulating fire-like trails with hardware acceleration.
Modern Noise
This implementation uses FBM (Fractional Brownian Motion) and domain warping in the fragment shader to procedurally generate the flame motion without per-frame CPU loops.
Doom Fire
The defining heat of the 90s FPS era.
Legacy C (PSX Doom)
void SpreadFire(int src) {
int pixel = firePixels[src];
int rand = (random() & 3);
int dst = src - rand + 1;
firePixels[dst - WIDTH] = pixel - (rand & 1);
}
Modern GLSL
float n = fbm(uv * 4.0 - vec2(0, iTime * 2.0)); float c = n * (1.0 - uv.y) * 1.5; col = mix(vec3(0), vec3(0.5, 0, 0), smoothstep(0.0, 0.3, c));