ComfyUI Node
Shader Noise Source
Shader noise as a NOISE object, so it can start a run driven by a custom guider, sampler and sigma schedule. One shader stage, painted into the starting noise; the Direct node's stages need the Direct node.
Shader Noise Source
- noise
◄seed8888►
◄shader_strength0.30►
◄blend_modemultiply►
◄noise_transformnone►
◄use_temporal_coherencefalse►
◄shader_typedomain_warp►
◄shape_typenone►
◄color_schemenone►
◄noise_scale1.000►
◄octaves1.0►
◄warp_strength0.500►
◄shape_mask_strength1.0000►
◄phase_shift0.5000►
◄color_intensity0.8000►
◄fast_high_channel_noisefalse►
◄presetcustom►
◄stage_progressionuniform►
◄shade_non_spatialfalse►
◄travel_modewalk►
◄normalize_strengthtrue►
Categorymodel/sampling/noise
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 88880–18446744073709550000 | Random seed for generation. Same seed with same parameters will generate the same image. |
| shader_strength | FLOAT | 0.300–1 | How far from the seed the shader takes you. 0.0 disables it. Keep the seed fixed and it is your starting point: low values explore close to the image that seed makes, higher values go further, and the shader's own pattern and colour blend progressively into the picture until, at the top, they can take it over. How fast that happens belongs to the model, the seed and noise_scale rather than to this number. Measured with domain_warp on one prompt each: SD 1.5 at 512x512 re-composes by 0.25, blends visibly at 0.5 and is mostly shader by 0.75; MiniMax H3 stays a close neighbour of the seed's scene through 0.5, lets the shader's colour in at 0.75 and blends it strongly into the scene at 1.0. curl_noise, shape masks and temporal coherence reach each stage at roughly half the value. |
| blend_mode | COMBO | multiply | How shader noise is mixed into the base noise. Each mode hands the sampler a different share of the shader at the same strength -- normal the most, difference the least -- and shapes its structure differently. With normalize_strength on, the default, strength is rescaled so every mode delivers the same share as multiply, and the modes then differ in character rather than in amount. All of them keep mean 0 / std 1, so the sampler still gets noise it can denoise. |
| noise_transform | COMBO | none | Apply mathematical transformations to the noise for creative effects |
| use_temporal_coherence | BOOLEAN | false | Hold one seed across every video frame so the shader pattern evolves only through time, instead of redrawing per frame. Frames share one pattern, so it reinforces rather than averaging out and shows at lower strength than a redrawn pattern: on MiniMax H3 it took over the picture at 0.5 and was hard to see at 0.2. No effect on single images. |
| shader_type | COMBO | domain_warp | Which noise pattern to blend in; each has its own character when it shows. domain_warp: flowing, intricate distortions, the even-handed default. tensor_field: structured and directional. curl_noise: smooth fluid motion, and the one that shows soonest, at about half the strength of the others. temporal_coherent: 4D simplex with time as a real axis, built for smooth animation; on MiniMax H3 it shows sooner than domain_warp, as a dot-grid pattern past about 0.5. spectral: soft cloud-like fields built from their own frequency band rather than pixel by pixel -- no filaments or swirls, and colour schemes do nothing to it, but noise_scale sets the band directly and it costs almost nothing to draw (about 90ms where the others take seconds on a long video). Its character is untested against real prompts, so treat its strengths as unknown rather than calibrated. gaussian: the control -- plain white noise, the same thing the sampler already starts from, so any strength moves you toward another seed's neighbourhood without adding structure; noise_scale, octaves, warp_strength, phase_shift and colour schemes do nothing to it, shape masks still apply, and with temporal coherence a clip drifts smoothly from one white field to a second. fractal: the reference FBM, plain layered simplex; warp_strength sets the spacing between the layers and phase_shift slides each layer to a different part of the field, so neither does anything at octaves 1. perlin: classic gradient noise, smoother and more lattice-like than simplex; warp_strength swirls the detail layers while the base layer keeps its shape, and phase_shift is contrast. heterogeneous_fbm: an FBM whose detail varies across the frame, rough patches and smooth ones; warp_strength is how different they are and phase_shift how much of the frame is rough, and both need octaves above 1. interference: two FBMs turned into crossing cos and sin fringes, banded and moire-like; warp_strength sets the fringe density and phase_shift retunes the second field. projection_3d: a plane through a 3D field; phase_shift is the depth of the slice and time slides it, so a clip is coherent by construction, and warp_strength bends the plane. cellular: Worley cells; octaves picks the pattern (1 nearest distance, 2 second-nearest, 3 edges, 4 product, fractional values blend two), phase_shift the cell shape (0 diamond, 0.5 round, 2 square) and warp_strength bends the lattice. waves: octaves seeded plane waves summed, straight at warp_strength 0 and bent above it; phase_shift rearranges the same waves into a different interference pattern. |
| shape_type | COMBO | none | Mask the shader noise into a shape before it reaches the sampler (not post-processing). A mask concentrates the noise into hard geometry, which survives denoising far more readily than plain shader noise, so the shape itself starts being drawn into the picture at lower strength: on MiniMax H3 it was at 0.6, which is what the stamp preset uses. Around 0.2 the mask shapes the noise without being drawn. |
| color_scheme | COMBO | none | Choose a color palette to apply to the shader noise visualization [not post processing - is applied to the shader noise pattern before rendering] |
| noise_scale | FLOAT | 1.0000.1–10 | Size of the shader's features: lower is larger and zoomed in, higher is smaller and zoomed out. It changes how the shader shows as much as strength does. Large features carry the pattern into the result and pull away from the seed; small ones are mostly absorbed into the picture while still steering it. On SD 1.5 at strength 0.5, 0.5 turned every seed abstract and 2.0 gave clean portraits again; on MiniMax H3 at the same strength both stayed photographic, with 0.5 re-composing the scene most. Small shifts can lead to large variations. |
| octaves | FLOAT | 1.01–8 | Number of shader noise layers to combine - higher values add more detail and complexity. Fractional values blend between two layer counts (standard sampling only) |
| warp_strength | FLOAT | 0.5000–5 | Control how much the shader noise pattern warps and distorts - higher values create more swirling or complex transformations [small adjustments are good for subtle variations] |
| shape_mask_strength | FLOAT | 1.00000–2 | Adjust the intensity of the shape mask's effect on the shader noise pattern - higher values make the shape more prominent [small adjustments are good for subtle variations - not effective without shape mask] |
| phase_shift | FLOAT | 0.50000–2 | Shift the phase of the shader noise pattern to create different variations or animate patterns over time [small adjustments are good for subtle variations] |
| color_intensity | FLOAT | 0.80000–1 | Adjust the intensity of the color scheme application - lower values are more desaturated, higher values are more vibrant [small adjustments are good for subtle variations - not effective without color scheme] |
| fast_high_channel_noiseopt | BOOLEAN | false | Use a faster, simplified noise generation method for models with many channels (>16), like LTXV |
| presetopt | COMBO | custom | Pick one and go. A preset sets shader_type, shader_strength, blend_mode, travel_mode, stage_progression and shape_type together, and turns normalize_strength on so its strength number means the same thing in any blend mode -- those settings only mean anything in combination. nudge: the smallest visible change. explore: the recommended start. roam: further from the seed, where the shader visibly reshapes the picture and the prompt still reads. video: the 4D time-aware shader, for video latents. jump: destination set by the shader, texture rather than a scene. stamp: jump with a shape mask, so the mask itself is drawn in your prompt's material. custom leaves every widget alone. The Walk node keeps whichever parameter it is ramping. |
| stage_progressionopt | COMBO | uniform | Which end of the trajectory this noise is drawn for. Across a multi-stage run the sampler ramps zoom and detail with position; there is only one stage here, and it is the start, so coarse_to_fine draws it zoomed in on large features with fewer octaves and fine_to_coarse zoomed out on small ones with more. The adjustment spans 0.5x to 2x your noise_scale and plus or minus one octave, so uniform is unchanged. The roam and video presets set this, which is why they look different from their strength alone. |
| shade_non_spatialopt | BOOLEAN | false | Also paint the streams that have no picture in them. Off, the shader touches only the spatial stream and everything else keeps the Gaussian noise ComfyUI gave it -- on MiniMax H3 and LTXAV that means the audio is left alone, and sequence latents (Stable Audio, ACE-Step 1.5, MiniMax Music 3, Hunyuan3D, TripoSplat) are refused outright. On, an audio stream is painted across stereo x time, and a sequence latent is painted as a single row. Video and audio are denoised together on H3, so this reaches the picture too. Largely unexplored: audio has no busy scene for structure to blend into, so the shader changes the sound at far lower strength than it changes the picture -- on H3 the sound measurably changed by 0.05. Streams too small to be content are skipped, so TripoSplat's camera parameters are left alone. |
| travel_modeopt | COMBO | walk | How the shader moves you. walk: the seed anchors the picture and the shader steers around it -- the wide, coherent range this node is for, and the right answer unless you want otherwise. drift: halfway, a stronger push over a narrower range. jump: the shader's parameters set the destination and the seed stops mattering; the result is a texture or pattern field in your prompt's material rather than a scene, because the model is being handed noise it was never trained to denoise. The difference is how many independent directions the noise spans across the latent's channels: walk keeps the generator's own, one field per channel; drift mixes them down to four; jump folds them into one. On a four-channel latent such as SD 1.5, four is all there is, so drift and walk come out the same. |
| normalize_strengthopt | BOOLEAN | true | Make shader_strength mean the same thing in every blend mode. Untouched, the modes differ by up to twenty-three times at the same setting: at 0.5 normal hands the sampler 0.71 of the shader and difference only 0.03. With this on, strength is read on multiply's scale, so the default mode is unchanged and the others are rescaled to match -- soft_light needs about 1.6x its old number, add and hard_light about half. difference cannot reach the top of the scale at all and saturates. On by default. On multiply it changes nothing, so the only reason to turn it off is to reproduce a workflow saved before it was on, and only if that workflow used another blend mode. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| noise | NOISE | The noise a run starts from, for SamplerCustomAdvanced's noise input or AddNoise's. |