ComfyUI Node
Shader Noise Walk
Sample one seed repeatedly while a shader parameter ramps, and return the results as a batch. Turns the pack's core idea -- explore around a seed rather than hop between seeds -- into one node instead of a run per value.
Shader Noise Walk
- model
- positive
- negative
- latent_image
- custom_sigmas
- latent_batch
◄seed8888►
◄steps20►
◄cfg7.0►
◄sampler_nameeuler_ancestral►
◄schedulerbeta►
◄denoise1.00►
◄sequential_stages1►
◄injection_stages0►
◄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►
◄walk_parametershader_strength►
◄walk_start0.00►
◄walk_end0.25►
◄walk_steps5►
◄sampling_modestandard►
◄sequential_distributionlinear_decrease►
◄injection_distributionlinear_decrease►
◄fast_high_channel_noisefalse►
◄presetcustom►
◄stage_progressionuniform►
◄shade_non_spatialfalse►
◄travel_modewalk►
◄normalize_strengthtrue►
◄add_noisetrue►
◄start_at_step0►
◄end_at_step10000►
◄return_with_leftover_noisefalse►
Categorysampling
Inputs (43)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The AI model used for image generation | |
| seed | INT | 88880–18446744073709550000 | Random seed for generation. Same seed with same parameters will generate the same image. |
| steps | INT | 201–10000 | Number of sampling steps. Higher values can produce better results but take longer |
| cfg | FLOAT | 7.00–100 | Classifier-free guidance scale. Higher values follow the prompt more closely |
| sampler_name | COMBO | euler_ancestral | Algorithm used for the sampling process |
| scheduler | COMBO | beta | Scheduler used to determine noise level at each step |
| positive | CONDITIONING | Positive conditioning/prompts that guide what to include in the image | |
| negative | CONDITIONING | Negative conditioning/prompts that guide what to exclude from the image | |
| latent_image | LATENT | Input latent image to be processed | |
| denoise | FLOAT | 1.000–1 | Denoising strength. Lower values preserve more of the original image |
| sequential_stages | INT | 10–10 | Number of sequential shader stages to apply before injection stages |
| injection_stages | INT | 00–10 | Number of injection shader stages to apply after sequential stages |
| 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] |
| walk_parameter | COMBO | shader_strength | Which parameter ramps across the batch. The others keep their widget values. shader_strength walks away from the seed and is the one to start with; phase_shift holds the same distance and turns the pattern instead, so the subject persists while its details rearrange. Walking seed is ordinary seed-hopping, for comparison against the rest. |
| walk_start | FLOAT | 0.000–4294967295 | First value of the ramp. For shader_strength, 0.0 gives a clean reference frame to compare the others against. |
| walk_end | FLOAT | 0.250–4294967295 | Last value of the ramp, inclusive. Past roughly 0.3 the shader's own pattern starts surviving into the picture on video models -- see shader_strength. |
| walk_steps | INT | 51–16 | How many samples to take along the ramp, endpoints included. This is that many full sampling runs, so the time is roughly walk_steps x a single run -- the model is loaded once and stays resident. Maximum 16. |
| custom_sigmasopt | SIGMAS | Optional custom sigma schedule to override the model's default schedule | |
| sampling_modeopt | COMBO | standard | standard: stages are segments of one sampling run, denoise and custom sigmas are honoured, and blended noise keeps the distribution the model expects. legacy: the pre-2.0 behaviour, kept so older workflows reproduce their seeds. |
| sequential_distributionopt | COMBO | linear_decrease | How shader strength is distributed across sequential stages |
| injection_distributionopt | COMBO | linear_decrease | How shader strength is distributed across injection stages |
| 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 | Vary the shader across the run instead of drawing the same one at every stage. The trajectory is not uniform -- early steps settle composition, late steps settle detail -- but every stage has always used the same zoom. coarse_to_fine starts zoomed in on large features with fewer octaves and ends zoomed out on small ones with more, so the noise matches what each part of the run is deciding; fine_to_coarse reverses it. The adjustment spans 0.5x to 2x your noise_scale and plus or minus one octave, centred on your widget values, so uniform is unchanged. The ramp needs more than one stage, but a single stage is not left alone: it sits at the start of the trajectory, so coarse_to_fine draws it zoomed in and fine_to_coarse zoomed out. Standard sampling only. |
| 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. Standard sampling only. |
| 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. Standard sampling only. |
| 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. Standard sampling only. |
| add_noiseopt | BOOLEAN | true | Make the noise this run starts from. Off, the latent is taken to already carry its own -- handed over by an earlier sampler that stopped with return_with_leftover_noise on -- and this node only carries on denoising it. It belongs with start_at_step: left at step 0 there is no trajectory to continue, and a flow model such as MiniMax H3 is handed an empty latent. It also leaves the shader nothing to paint at the opening, so with the default single stage the shader does nothing at all; raise injection_stages or sequential_stages and it enters at those boundaries instead, where the noise is recovered from the latent rather than made here. Standard sampling only. |
| start_at_stepopt | INT | 00–10000 | Enter the schedule at this step instead of the first. With end_at_step it samples a window of the run rather than all of it, which is how a generation gets split: this node takes the early steps, something works on the latent in between -- a latent upscaler is the usual reason -- and a second node finishes from where this one stopped. The schedule is still the full steps long and denoise still shapes it; this only chooses where to enter. Stages spread across the window, so they divide the steps actually sampled. Standard sampling only. |
| end_at_stepopt | INT | 100000–10000 | Stop after this step instead of running the schedule out; anything at or past steps runs to the end. With return_with_leftover_noise off the latent is still brought to a clean finish here, which is what an upscaler or any node that works on a picture needs. Standard sampling only. |
| return_with_leftover_noiseopt | BOOLEAN | false | Hand the latent over still noisy when end_at_step stops the run early, instead of finishing it cleanly. Turn it on for the first half of a split whose second half has add_noise off: the two then continue one trajectory exactly, with nothing re-noised in between. Leave it off when something between the halves needs a finished latent to work on. No effect when the run reaches the end of its schedule. Standard sampling only. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent_batch | LATENT | One latent per point on the ramp, batched in order, ready for a comparer or a single VAE decode. |