Nodes/Skoogeer-Noise/Image Reaction-Diffusion
ComfyUI Node

Image Reaction-Diffusion

Grow Some Biology Into Your Image

By ttulttul·Created 9 months ago·Updated 3 months ago· 14
Image Reaction-Diffusion
  • image
  • mask
  • IMAGE
seed0
iterations200
feed_rate0.036
kill_rate0.065
diffusion_u0.16
diffusion_v0.08
time_step1.00
strength0.75
channel_modeshared
temporal_modelocked

Most "noise" tools add randomness. Image Reaction-Diffusion runs a simulation instead - the Gray-Scott reaction-diffusion model, the same equations that grow the patterns on fish, leopards, coral, and chemical beakers - and then injects the resulting pattern into your image. The result is texture that looks alive: spots, stripes, labyrinth-like corridors, branching coral forms. It's the most "emergent" node in the Skoogeer-Noise pack, and if you're making organic surfaces or background textures, it's worth knowing.

The model is a classic: two chemicals, U and V, diffuse across the grid while reacting with each other. Tiny changes in how fast U is fed in (feed_rate) or how fast V dies (kill_rate) flip the whole pattern between spots, stripes, and chaos. That sensitivity is the fun part - it's a treasure hunt for pattern parameters - and also the part that will eat an afternoon.

How it works

The node seeds a grid, runs iterations Gray-Scott steps (each step diffuses and reacts U and V), and ends up with a concentration pattern that's normalized and added to the image at strength relative to the image's standard deviation. The two big knobs are the classic F/K pair: feed_rate (F) and kill_rate (K). The defaults, F=0.036 and K=0.065, sit in the classic spot/stripe territory. channel_mode reuses one simulation for all channels or reruns it per channel (expensive); temporal_mode locks the pattern across video frames or reruns per frame.

The inputs that matter

  • image - target image.
  • seed - initial chemical concentrations; changes the pattern.
  • iterations - simulation length (1–2000). More steps = more evolved pattern, slower.
  • feed_rate / kill_rate - the pattern-shape dials. Small changes, big differences.
  • strength - how hard the pattern pushes into the image.

Output is the perturbed IMAGE.

Installing it

Part of Skoogeer-Noise. Manager → search "Skoogeer-Noise", or:

cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/Skoogeer-Noise

Restart ComfyUI. Deps are torch, numpy>=1.26, einops, pyyaml>=6.0.3 - nothing heavy to fetch.

Common gotchas

Patience is the main requirement. Each simulation is a loop over the whole grid, iterations times, and per_channel multiplies that by your channel count - a 2000-iteration, per-channel run on a big image is real compute, not a moment. The other trap is the F/K sensitivity: nudge feed_rate by 0.001 and your spots become stripes, which is a feature until you're chasing a specific look. And remember the pattern is added, so at high strength the texture dominates and the original image becomes a distant memory. Start low, preview, evolve.

CategoryImage/Noise

Inputs (12)

NameTypeDefaultDescription
imageIMAGEImage that will receive reaction-diffusion patterns.
seedINT00–18446744073709550000Seed for the initial chemical concentrations.
iterationsINT2001–2000Number of Gray-Scott simulation steps.
feed_rateFLOAT0.0360–0.1Feed rate (F) controlling how quickly chemical U is replenished.
kill_rateFLOAT0.0650–0.1Kill rate (K) regulating removal of chemical V.
diffusion_uFLOAT0.160–1Diffusion rate for chemical U.
diffusion_vFLOAT0.080–1Diffusion rate for chemical V.
time_stepFLOAT1.000.01–5Simulation time step used during integration.
strengthFLOAT0.750–5Scale of the normalized pattern relative to the image's standard deviation.
channel_modeCOMBOsharedReuse one simulation for all channels or rerun per channel.
temporal_modeCOMBOlockedlocked reuses the same pattern for every frame; animated reruns the simulation per frame.
maskoptMASKOptional mask (often image-sized) to limit the pattern injection to masked areas. The mask is resized to the image resolution (bicubic when downscaling).

Outputs (1)

NameTypeDescription
IMAGEIMAGE