Field Noise
Perlin, Simplex and Worley That Look the Same at Every Resolution
- reference_image
- reference_mask
- mask
- preview
The one you'll actually start with
Everybody's noise node in ComfyUI is a latent-noise generator: it makes the tensor you sample from. Field Noise makes something different - a mask. A controllable, resolution-independent, deterministic pattern of values you can use to decide where things happen. Multiply it by an edge field and your effect lands on the contours of the image; threshold it and you've got organic blobs; wire it into Field Composite and you've got a spatially random blend instead of a uniform one.
And now the part that justifies the whole pack: it's a procedural function of position, not of pixel index. scale is "cells across the longer edge", so a 512 preview and a 2048 render are the same picture sampled more finely. Change the aspect ratio from 1:1 to 16:9 and your circles stay circles, because both axes are divided by max(width, height) rather than by width and height separately. If you've ever generated a noise mask, upscaled the workflow, and gotten a visually different result, this is the fix.
Five kernels, one coverage control
noise_type gives you perlin (default), simplex, value, worley_f1 and worley_f2f1. Perlin and simplex are the smooth gradient noises you'd expect; value is blockier; the two Worley variants are cellular - f1 is the distance to the nearest feature point (bubbles), f2f1 is the difference between the second-nearest and nearest (a crackle/vein pattern).
octaves, gain and lacunarity are standard fBm: layer count, per-octave amplitude falloff, per-octave frequency multiplier. Octaves are fixed regardless of resolution, which is the invariant the whole pack protects.
Then coverage, and this is the good bit. Noise is bell-shaped, not uniform, so thresholding it at 0.5 doesn't select half the frame - the fraction depends on the type, the octaves and the gain. In uniform mode (the default) the node applies a probability integral transform, estimated from a probe of the field over the visible window, so coverage = 0.3 means "30% of the frame is above the midpoint" for every type and every setting. That consistency is what makes noise comparable with edge fields and distance fields inside Field Combine.
native skips the transform and maps the raw kernel straight to 0–1 by its measured range. It looks washed out, and it's supposed to - a bell curve squeezed into a box does. The author keeps it mainly as the negative control that proves the coverage mechanism has teeth, which is a refreshingly honest reason to ship a mode.
offset_x / offset_y pan across the field in frame units (1.0 shifts by one frame width). seed drives the hash tables and a lattice offset, and width/height set the output.
Outputs and the reference inputs
Two outputs: mask (the field) and preview (the same thing as a 3-channel IMAGE). Wire preview to a Save Image when you're tuning; wire mask to Threshold, Combine, Composite, Morphology, or a sampler.
The reference_image and reference_mask inputs are worth more than they look: wire the image you're going to composite onto and the field inherits its width, height, batch size and device, so nothing downstream resizes. If you wire both, the image wins and the console tells you.
Why it's precise about the ugly bits
Two of the five kernels don't have an analytically known range, so their constants are measured: simplex uses 99.20433810130643, and Worley's native maxima come out at 1.32 for f1 and 1.40 for f2f1. The simplex number is the tell that nothing here was copy-pasted - this build's gradients are 16 unit vectors shared with the Perlin kernel, so the commonly cited 70.0 constant wouldn't apply.
The node also warns you in two situations: trailing fBm octaves get dropped if the finest would exceed the hash table's 4096-cell period, and a note fires (without changing anything) if the finest octave falls below 2 pixels per cell and will alias. Neither is an error; both tell you your settings aren't doing what the numbers suggest.
Install
ComfyUI Manager → search ComfyUI Field, or:
cd ComfyUI/custom_nodes
git clone https://github.com/jeremieLouvaert/ComfyUI-Field
Restart. No model files, no pip step - requirements.txt is empty because torch is already there. Nodes land under AKURATE/Fields/Generate.
Where it goes wrong
Cranking octaves and expecting more visible detail is the classic one. Past the hash table's period, higher octaves are silently dropped, and if your base scale is low the finer octaves fall below two pixels per cell and just alias into noise. The console tells you both times - read the console.
And a reality check worth knowing before you start: this pack is new enough that the community signal is essentially nil - searching the usual places for "ComfyUI-Field" turns up Reddit threads about something else entirely. There's no pile of tutorials to copy settings from. Read the tooltips and watch the console; the pack's own documentation is unusually good, and it's all you've got.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| noise_type | COMBO | perlin | 5 options: perlin, simplex, value, worley_f1, worley_f2f1 |
| scale | FLOAT | 6.00.1–512 | Noise lattice cells spanning the longer output dimension |
| octaves | INT | 41–8 | Number of fBm layers. Fixed regardless of resolution |
| gain | FLOAT | 0.500–1 | Amplitude falloff per octave |
| lacunarity | FLOAT | 2.001–4 | Frequency multiplier per octave |
| coverage | FLOAT | 0.500–1 | Fraction of the frame above the midpoint. 0.5 is a no-op |
| distribution | COMBO | uniform | uniform: PIT-normalised, coverage is exact. native: raw kernel range, coverage is approximate |
| seed | INT | 00–4294967295 | — |
| width | INT | 51216–8192 | — |
| height | INT | 51216–8192 | — |
| offset_x | FLOAT | 0.00-4–4 | Pan across the field, in frames. 1.0 shifts by one frame width |
| offset_y | FLOAT | 0.00-4–4 | Pan across the field, in frames. 1.0 shifts by one frame height |
| reference_imageopt | IMAGE | — | |
| reference_maskopt | MASK | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| mask | MASK | — |
| preview | IMAGE | — |