😺NKD Noise
Fractal noise for clouds, fog and smoke — image and mask, loopable
- mask
- image
- mask
Plain random noise is static - it reads as TV snow, not atmosphere. What clouds, fog, smoke and organic textures want is structured noise: big soft features with finer detail layered on top, which is exactly what fractal Brownian motion (fBm) produces. 😺NKD Noise generates fBm procedurally as an image and a mask, and - the part that makes it more than a texture generator - it animates over a frame batch and loops seamlessly.
The knobs
The fBm vocabulary is standard, and the defaults are sane places to start:
scale- feature count across the frame; higher = smaller, busier features. 6 is a middle-of-the-road cloud-like setting.detail- fractal octaves; more = finer detail. 4 is a good balance.roughness- how much each finer octave contributes. 0.5 is neutral; higher roughens, lower smooths.lacunarity- the frequency step between octaves. 2 is the classic value.distortion- domain warp; swirls the pattern for an organic look. This is the knob that turns "clouds" into "smoke."contrast/brightness- shape the output's tonal range.offset_x/offset_y- pan the field.seed- same seed, same field.
The animation trio is where it gets interesting: frames sets the batch length (>1 makes an animated sequence), evolution moves the field across frames (the 4D time dimension), and loop makes the last frame flow back into the first over frames - a seamless loop, which is what you want for a background fog that cycles without a visible jump.
The optional mask input confines the noise to a region, feathered by its values.
Outputs
image - the noise as a grayscale image. And mask, which is the same field as a mask. Both, because the two uses rarely overlap: an image you composite over a scene as atmosphere, a mask you use to drive something else (a gradient map, a composite weight, a paint-in region). The author's own suggestion is to feed the output into 😺NKD Gradient Map to tint it - the fBm field becomes the brightness structure, and the ramp becomes the color, which gives you tinted fog or a colored smoke plume without any sampling.
Install and gotchas
Install via ComfyUI Manager (search ComfyUI-NKD-Basic-Tools) or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nekodificador/ComfyUI-NKD-Basic-Tools
Restart after. Pack dependencies are onnxruntime and huggingface_hub; neither is needed here - this node is pure CPU math, no model, no download. The one thing that trips people up is scale intuition: scale is inverse (higher = smaller features), so if you expect big clouds and get grit, move scale down, not up. And loop only does its thing when frames > 1 - a single frame is trivially seamless and the setting is a no-op.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 10248–8192 | — |
| height | INT | 10248–8192 | — |
| frames | INT | 11–1000 | Batch length. >1 makes an animated sequence. |
| scale | FLOAT | 6.00.5–64 | Feature count across the frame — higher = smaller, busier features. |
| detail | INT | 41–8 | Fractal octaves — more = finer detail. |
| roughness | FLOAT | 0.500–1 | How much each finer octave contributes. |
| lacunarity | FLOAT | 2.001–4 | Frequency step between octaves. |
| distortion | FLOAT | 0.000–10 | Domain warp — swirls the pattern for an organic look. |
| contrast | FLOAT | 1.000–4 | — |
| brightness | FLOAT | 0.00-1–1 | — |
| evolution | FLOAT | 0.00–100 | Animation speed — evolves the field across frames (the 4D time dimension). |
| loop | BOOLEAN | false | Seamless loop: the last frame flows back into the first over `frames`. |
| offset_x | FLOAT | 0.0-100–100 | — |
| offset_y | FLOAT | 0.0-100–100 | — |
| seed | INT | 00–18446744073709550000 | — |
| maskopt | MASK | Optional — confine the noise to the mask, feathered by its values. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | The noise as a grayscale image. |
| mask | MASK | The noise as a mask. |