OCSNoise PerlinSimple
Swap your sampler's gaussian for structured noise
- ocs_noise_opt
- OCS_NOISE
Samplers usually add gaussian noise at every step, but they don't have to. Feed an ancestral or SDE sampler structured noise instead - noise that has spatial coherence, actual shapes, a pattern - and the image gets influenced by that structure. That's what OCSNoise PerlinSimple does: it generates 2D or 3D Perlin noise and hands it to your sampler as a custom noise source. It's one of the most approachable ways to see what the OCS custom-noise system is about, because you can hear the idea in one sentence: the noise you start with shapes the image you end with.
What it is
A custom noise generator in the OCS/SONAR noise ecosystem. It outputs OCS_NOISE, which you feed into an OCS Substeps node's custom_noise (via an OCS Param, or directly on nodes that accept it). Any sampler that generates noise during ancestral or SDE sampling will then use Perlin noise instead of gaussian. For the initial latent noise or img2img, the author points you to the NoisyLatentLike node from ComfyUI-sonar instead - this node is for noise during sampling.
The inputs that matter
octaves(default 2) - detail. Each octave is another layer of noise, and each one costs performance. More octaves = finer detail.persistence(default 1.0) - roughness. Lower values give smooth, rolling noise; higher values look progressively more like gaussian noise. Comma-separated values apply per-octave.lacunarity(default 2) - the frequency multiplier between octaves; only matters when octaves > 1.res(default 1) - the number of noise periods per axis. Comma-separated per-octave too.break_pattern(default 1.0) - this is the one beginners should know. Raw Perlin noise has a visible, often ugly pattern; breaking it mixes the structured noise with pattern-broken (gaussian-ish) noise. The tooltip says keep it at 0.9+ "unless you want to generate colorful blobs."depth(default 16) - when non-zero, generates 3D Perlin and takes a slice in the depth dimension per sampler call.
Output is OCS_NOISE. There's also an ocs_noise_opt input for chaining more noise generators, plus factor (scale) and rescale on the common base.
The shape gotcha
Perlin needs the latent dimensions to divide evenly. The README warns: the latent shape must be a multiple of lacunarity ** (octaves - 1) * res. Most latents are 8x smaller than pixels (512x512 image → 64x64 latent), so keep the exponents small or you'll get shape errors and a cryptic traceback.
Installing and gotchas
Comes with the pack - Manager search "Overly Complicated Sampling" or git clone https://github.com/blepping/comfyui_overly_complicated_sampling into ComfyUI/custom_nodes, restart. No models, no mandatory deps.
If you're not seeing any effect, remember where it plugs in: this is ancestral/SDE noise, so an eta: 0 (non-ancestral) sampler isn't generating new noise to replace. And the author recommends installing ComfyUI-sonar alongside OCS for many more noise types plus the Power Filter - Perlin is the tip of that iceberg.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| factor | FLOAT | 1.000-100–100 | Scaling factor for the generated noise of this type. |
| rescale | FLOAT | 0.0000–100 | When non-zero, this custom noise item and other custom noise items items connected to it will have their factor scaled to add up to the specified rescale value. |
| depth | INT | 16 | When non-zero, 3D perlin noise will be generated. |
| detail_level | FLOAT | 0.00-10000–10000 | Controls the detail level of the noise when break_pattern is non-zero. No effect when using 100% raw Perlin noise. |
| octaves | INT | 2 | Generally controls the detail level of the noise. Each octave involves generating a layer of noise so there is a performance cost to increasing octaves. |
| persistence | STRING | 1.0 | Controls how rough the generated noise is. Lower values will result in smoother noise, higher values will look more like Gaussian noise. Comma-separated list, multiple items will apply to octaves in sequence. |
| break_pattern | FLOAT | 1.00-10000–10000 | Applies a function to break the Perlin pattern, making it more like normal noise. The value is the blend strength, where 1.0 indicates 100% pattern broken noise and 0.5 indicates 50% raw noise and 50% pattern broken noise. Generally should be at least 0.9 unless you want to generate colorful blobs. |
| lacunarity | STRING | 2 | Lacunarity controls the frequency multiplier between successive octaves. Only has an effect when octaves is greater than one. Comma-separated list, multiple items will apply to octaves in sequence. |
| res | STRING | 1 | Number of periods of noise to generate along an axis. Comma-separated list, multiple items will apply to octaves in sequence. |
| ocs_noise_optopt | OCS_NOISE,SONAR_CUSTOM_NOISE | Optional input for more custom noise items. The following input types are supported: OCS_NOISE, SONAR_CUSTOM_NOISE |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| OCS_NOISE | OCS_NOISE | A custom noise chain. |