Nodes/ComfyUI GOAT Nodes/🐐 Advanced Latent Noise
ComfyUI Node

🐐 Advanced Latent Noise

An Empty Latent Image that actually cares what kind of noise it starts with

By AconexOfficialΒ·Created 2 years agoΒ·Updated 12 months agoΒ· 11
🐐 Advanced Latent Noise
  • opt_vae
  • opt_mask
  • LATENT
  • IMAGE
β—„seed0β–Ί
β—„width512β–Ί
β—„height512β–Ί
β—„batch_size1β–Ί
β—„deviceautoβ–Ί
β—„base_noise_typeSimplexβ–Ί
β—„strength1.00β–Ί
β—„offset0.00β–Ί
β—„normalize_output_rangefalseβ–Ί
β—„monochrome_noisefalseβ–Ί
β—„initial_frequency_scale8.0β–Ί
β—„enable_fbmtrueβ–Ί
β—„octaves4β–Ί
β—„persistence0.50β–Ί
β—„lacunarity2.00β–Ί
β—„fbm_summing_modeStandardβ–Ί
β—„fbm_interpolationSmoothstepβ–Ί
β—„enable_domain_warpfalseβ–Ί
β—„warp_noise_typeSimplexβ–Ί
β—„warp_octaves3β–Ί
β—„warp_strength20.0β–Ί
β—„warp_scale4.0β–Ί
β—„warp_persistence0.50β–Ί
β—„warp_lacunarity2.00β–Ί
β—„enable_composition_guidefalseβ–Ί
β—„composition_guide_typeNoneβ–Ί
β—„guide_strength0.30β–Ί
β—„guide_effect_on_noiseIntensity Boostβ–Ί
β—„guide_line_thickness_factor0.050β–Ί
β—„guide_line_fading_percent50β–Ί
β—„mask_effectModulate Intensity By Maskβ–Ί

Every generation starts from an Empty Latent Image, and by default that's just uniform Gaussian static - the sampler denoises it into a picture from a completely featureless starting point. Most of the time that's exactly what you want. But the shape of the starting noise quietly influences composition, especially at low step counts or with a strong initial denoise, and Advanced Latent Noise exists for the cases where you want to lean into that instead of ignoring it - swapping plain Gaussian static for structured noise (Perlin, Simplex, Voronoi cells, and a few more), optionally shaped toward a composition guide, and optionally masked to specific regions.

How it works

At its core it's still generating a starting latent of your chosen width/height/batch size - same job as Empty Latent Image. The difference is base_noise_type: instead of one flavor, you get eleven, split roughly into "smooth gradient" noise (Perlin, Simplex - the classic procedural-texture generators used everywhere from terrain generation to shaders) and "cellular" noise (the three Voronoi variants, which produce blob/cell-like patterns instead of smooth gradients). On top of the base noise, enable_fbm layers fractal Brownian motion - stacking multiple octaves of the same noise at shrinking scale and amplitude, which is how you get natural-looking multi-scale detail instead of noise that all looks like one texture size. octaves, persistence, and lacunarity control how many layers stack and how quickly each one shrinks; fbm_summing_mode (Standard/Turbulence/Ridge) changes how those layers combine, with Ridge in particular producing the sharp vein-like patterns you'd recognize from procedural terrain.

There's a second, independent layer on top: enable_domain_warp, which distorts the noise's coordinate space with a second noise field before sampling the first - the classic trick for turning straight, orderly-looking procedural noise into something organic and swirled, rather than adding more detail.

Then there's enable_composition_guide - this is the node's most unusual feature. It can bias the noise intensity toward classic composition patterns (Rule of Thirds, Golden Ratio Lines, Central Focus, a diagonal flow, or a combined mode), either boosting or reducing noise energy along those lines via guide_effect_on_noise. The idea is nudging where the sampler has more to work with, not painting anything explicit.

Inputs and outputs that matter for a first try

  • base_noise_type - start here. Simplex (the default) and Perlin are the safest, most natural-looking starting points; the Voronoi options give you a much more structured, cellular starting bias.
  • strength (0–10, default 1) - how much this noise contributes versus a neutral baseline; offset shifts the noise's mean.
  • enable_fbm (on by default) - turn this off if you want flat, single-scale noise instead of layered detail.
  • normalize_output_range and monochrome_noise - the latter makes the noise identical across color channels instead of per-channel, useful if you want structure without a color tint.
  • Optional opt_mask - restrict the effect to a masked region, leaving the rest of the latent as plain noise; optional opt_vae is needed to produce the preview image output.

Two outputs: LATENT (feed straight into your sampler in place of Empty Latent Image) and IMAGE (a visualization of the noise itself - only populated if you connected opt_vae, useful for sanity-checking what you're about to feed the sampler before you burn a full render on it).

How to install it

ComfyUI Manager: search "GOAT Nodes", install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes.git

then restart. No model downloads - this is pure procedural generation, code only. The device input (auto/cuda/cpu) lets you force where the noise gets generated if auto picks wrong for your setup.

Common issues & troubleshooting

No visible effect at all. This is the single biggest trap with structured starting noise in general: at high step counts with a normal denoise, the sampler has plenty of room to override whatever you started from, and the composition bias gets washed out. You'll see the most effect at lower step counts or when you deliberately keep denoise high but steps constrained - this node shapes a starting point, it doesn't force an outcome.

IMAGE output is empty/black. You didn't connect opt_vae. It's optional for a reason - most people don't need the preview - but if you're trying to actually look at the noise pattern, wire your model's VAE into it.

Too many knobs, don't know where to start. Leave everything at default except base_noise_type and strength for your first few tries. The FBM and domain-warp parameters are there for people chasing a specific texture; they're not required reading to get a usable result.

Categorylatent/noise

Inputs (33)

NameTypeDefaultDescription
seedINT00–9223372036854776000β€”
widthINT51264–8192β€”
heightINT51264–8192β€”
batch_sizeINT11–64β€”
deviceCOMBOauto3 options: auto, cuda, cpu
base_noise_typeCOMBOSimplex11 options: Gaussian, Uniform, Value, Perlin, Simplex, Voronoi F1, +5
strengthFLOAT1.000–10β€”
offsetFLOAT0.00-5–5β€”
normalize_output_rangeBOOLEANfalseβ€”
monochrome_noiseBOOLEANfalseβ€”
initial_frequency_scaleFLOAT8.00.1–256β€”
enable_fbmBOOLEANtrueβ€”
octavesINT41–16β€”
persistenceFLOAT0.500.01–1β€”
lacunarityFLOAT2.001–4β€”
fbm_summing_modeCOMBOStandard3 options: Standard, Turbulence, Ridge
fbm_interpolationCOMBOSmoothstep2 options: Smoothstep, Linear
enable_domain_warpBOOLEANfalseβ€”
warp_noise_typeCOMBOSimplex3 options: Value, Perlin, Simplex
warp_octavesINT31–8β€”
warp_strengthFLOAT20.00–200β€”
warp_scaleFLOAT4.00.1–100β€”
warp_persistenceFLOAT0.500.01–1β€”
warp_lacunarityFLOAT2.001–4β€”
enable_composition_guideBOOLEANfalseβ€”
composition_guide_typeCOMBONone6 options: None, Rule of Thirds, Golden Ratio Lines, Central Focus, Diagonal Flow TL-BR, Combined
guide_strengthFLOAT0.300–1β€”
guide_effect_on_noiseCOMBOIntensity Boost2 options: Intensity Boost, Intensity Reduce
guide_line_thickness_factorFLOAT0.0500.005–0.2β€”
guide_line_fading_percentFLOAT500–100β€”
mask_effectCOMBOModulate Intensity By Mask3 options: Modulate Intensity By Mask, Apply To Masked Area, Apply To Unmasked Area
opt_vaeoptVAEβ€”
opt_maskoptMASKβ€”

Outputs (2)

NameTypeDescription
LATENTLATENTβ€”
IMAGEIMAGEβ€”