Nodes/noise latent perlinpinpin/NoisyLatentPerlin16ch
ComfyUI Node

NoisyLatentPerlin16ch

The same perlin trick, for Flux-class latents

By Extraltodeus·Created 3 years ago·Updated 2 years ago· 34
NoisyLatentPerlin16ch
    • LATENT
    seed0
    width1024
    height1024
    batch_size1
    detail_level0.0

    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=8192 in 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.

    Categorylatent/noise

    Inputs (5)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000
    widthINT10248–8192
    heightINT10248–8192
    batch_sizeINT11–64
    detail_levelFLOAT0.0-1–1

    Outputs (1)

    NameTypeDescription
    LATENTLATENT