Nodes/Comfyui-PainterSampler/Painter Sampler Advanced
ComfyUI Node

Painter Sampler Advanced

PainterSampler and the Wan 2.2 two-expert shuffle

By princepainter·Created 10 months ago·Updated 10 months ago· 22
Painter Sampler Advanced
  • high_model
  • low_model
  • positive
  • negative
  • latent_image
  • latent
add_noiseenable
noise_seed0
steps20
high_cfg8.00
low_cfg8.00
sampler_name
scheduler
start_at_step0
switch_at_step2
end_at_step10000
return_leftover_noisedisable

If you've run Wan 2.2 in ComfyUI, you've stared at the official workflow's two KSamplerAdvanced nodes chained back to back: one for the high-noise expert, one for the low-noise expert. Wan 2.2 is a mixture-of-experts model, and it splits denoising into a high-noise pass that handles motion and composition and a low-noise pass that refines detail. The native workflow runs them as two separate samplers, which means twice the wiring and two CFG sliders to keep in sync. PainterSampler collapses the whole chain into one node - same two models, same two passes, one widget stack.

That's the entire pitch, and it's honest. The node's README says "one node, same quality," and the mechanism backs it up: the source is a verbatim copy of ComfyUI's own common_ksampler, run twice in sequence. It doesn't call an API, load extra weights, or reinvent sampling. It's the same code path the stock sampler uses, which is why the "bit-identical frames" claim is mechanically plausible rather than marketing. What you actually get beyond tidiness is a second CFG slider - high_cfg and low_cfg let you tune the two passes independently, which the stock double-KSampler chain makes you chase manually.

How it works

Phase one runs your high_model from start_at_step to switch_at_step - that's the motion/composition expert doing its thing on fresh noise (add_noise controls whether it gets any). Phase two hands the latent to low_model from switch_at_step to end_at_step, with noise always disabled, exactly like the tail end of a KSamplerAdvanced chain. return_leftover_noise maps to the final force_full_denoise on that last pass. Both stages share noise_seed, and you get one latent out, ready for VAE decode.

The inputs that matter

  • high_model / low_model - your two Wan 2.2 experts. This is also where you get to follow the community's best practice for speed LoRAs: attach the acceleration LoRA to low_model only, and keep the high-noise pass unmodified. Doing the reverse tanks motion quality.
  • start_at_step / switch_at_step / end_at_step - the whole two-pass schedule. The README's 4-step Wan 2.2 recipe is steps 4, start 0, switch 2, end 4, return_leftover_noise disabled.
  • high_cfg / low_cfg - the independent CFGs, the one feature the official chain doesn't give you.

The rest - sampler_name, scheduler, positive, negative, latent_image, noise_seed - wire exactly like a KSamplerAdvanced, because that's what this node is pretending to be.

Installing it

There's no requirements.txt and no model download; the only dependency is ComfyUI itself. Clone it in, restart, and the node appears under sampling → painter:

cd ComfyUI/custom_nodes
git clone https://github.com/princepainter/Comfyui-PainterSampler.git

You can also try ComfyUI Manager, but it's a young, near-untouched pack (zero search impressions as of writing), so the Manager index may lag behind the repo - the clone route is the reliable one.

Where people get burned

Honestly, there's not much community wisdom to lean on - this node has essentially no footprint on Reddit, which tells you two things. First, if something breaks, you're debugging it alone. Second, this is a quality-of-life wrapper, not a fix: if the stock KSamplerAdvanced behavior changes in a ComfyUI update, this copy won't follow automatically, so a future update could quietly drift from "bit-identical."

One quiet behavior worth knowing: the code clamps your slider values. end_at_step gets forced to at least start_at_step + 2, and switch_at_step gets clamped between start + 1 and end - 1. Pull the sliders into a nonsense range and it won't error - it'll just fix them for you.

And the honest caveat: if you're not already running the two-expert Wan 2.2 setup, this node does nothing for you. It's purpose-built for that specific chain, not a general-purpose sampler. But if you are, and you're tired of dragging lines across the canvas between two identical KSamplerAdvanced stacks, it's the tidy one.

Categorysampling/painter

Inputs (16)

NameTypeDefaultDescription
high_modelMODEL
low_modelMODEL
add_noiseCOMBOenable2 options: enable, disable
noise_seedINT00–18446744073709550000
stepsINT201–10000
high_cfgFLOAT8.000–100
low_cfgFLOAT8.000–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
start_at_stepINT00–10000
switch_at_stepINT21–10000
end_at_stepINT100000–10000
return_leftover_noiseCOMBOdisable2 options: disable, enable

Outputs (1)

NameTypeDescription
latentLATENT