NoisyLatentPerlin16ch
The same perlin trick, for Flux-class latents
- LATENT
NoisyLatentPerlin16ch is the exact same node as NoisyLatentPerlin, except it fills 16 latent channels instead of 4. That's not a flex, it's a compatibility fix. SD1.5 and SDXL's VAEs compress into a 4-channel latent space, but Flux and the SD3.x family run 16 channels - check the configs and you'll see z_channels: 16 in Flux's code. Feed a 4-channel noise tensor to a Flux sampler and you get noise or flat color, not a picture, because the shapes don't line up. This node is the Flux-safe version of the same trick.
Everything you already know still applies
All the behavior carries straight over, because it's literally a subclass - the source is:
class NoisyLatentPerlin16ch(NoisyLatentPerlin):
def create_noisy_latents_perlin(self, seed, width, height, batch_size, detail_level, *, channels=16):
return super().create_noisy_latents_perlin(...)
Same seeded perlin generation, same %11 pattern-breaking line, same inverse-error-function transform into Gaussian-ish noise, same clamp. Inputs are identical: seed, width, height, batch_size, and detail_level (default 0, range -1 to 1) which scales the noise amplitude. The output is the same standard LATENT dict, wired into a KSampler's latent_image at denoise 1.0 - or into your second-pass upscale sampler, if you're doing the coherent-detail reinjection trick.
And the same rules apply:
- Keep the same aspect ratio between the initial pass and the reinjection pass, or the perlin patterns won't match. This is the author's own all-caps warning and it's the thing that actually bites people.
- 8192 is the hard cap on width and height (
MAX_RESOLUTION=8192in the source). - 16 channels means the noise tensor is four times bigger than the 4-channel node's, but it's still generated on CPU in a fraction of a second - nothing to worry about.
Which one to reach for
The deciding factor is just your model family:
- SD 1.5, SDXL, and friends → NoisyLatentPerlin
- Flux, SD3.x, and other 16-channel VAE models → NoisyLatentPerlin16ch
You can't swap them between families, so keep both installed (they ship together in the same file) and just grab the right one per workflow. If you're on Flux, this is the node from the pack you actually want - same great upscale-coherence trick, correct channel count.
Install
Same pack, same one-liner:
cd ComfyUI/custom_nodes
git clone https://github.com/Extraltodeus/noise_latent_perlinpinpin
Restart ComfyUI (or install via Manager, search "noise_latent_perlinpinpin") and both nodes appear. No model downloads, no heavy dependencies - just torch and math. The README's mention of BlenderNeko's noise nodes and city96's SD-Latent-Upscaler is for the included workflow, not a requirement for this node to run.
There's less to say here because there's less to it - it's a one-line variant of a genuinely clever idea, and if you run Flux it's the variant you need.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | — |
| width | INT | 10248–8192 | — |
| height | INT | 10248–8192 | — |
| batch_size | INT | 11–64 | — |
| detail_level | FLOAT | 0.0-1–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |