Painter Sampler Advanced
Run two models per clip with Painter Sampler Advanced
- high_model
- low_model
- high_positive
- high_negative
- low_positive
- low_negative
- latent_image
- latent
Here's the thing people don't get about Wan 2.2 until they've stared at a progress bar for 25 minutes: it's not one model, it's two. A high-noise expert handles motion and scene composition, a low-noise expert handles detail, and they run sequentially over the same latent. The community figured out the practical trick quickly - speed LoRAs absolutely wreck 2.2's quality if applied everywhere, but if you only speed up the low-noise pass you keep the full-quality high-noise motion and save the time. Painter Sampler Advanced is that workaround, turned into a node.
It's from the same pack as the other Painter nodes (LDNKS094's ComfyUI-Painter-I2V-AIO, the unified rewrite of princepainter's Wan 2.1/2.2 tools). It's the "Advanced" sibling of PainterSampler, and the difference is conditioning: where the basic node runs both phases off one positive/negative, this one takes four conditionings so each phase gets its own prompt context.
How it works
The mechanism is a tandem KSampler with a handoff. Phase one runs high_model on high_positive/high_negative from start_at_step up to switch_at_step (default 2) with high_cfg. Then phase two takes the same latent - no new noise added, it just keeps denoising - and runs low_model on low_positive/low_negative from switch_at_step to end_at_step with low_cfg. One seed, one sampler/scheduler, two models, two prompts.
That split is why it pairs with PainterI2VAdvanced, which outputs exactly those four conditionings: the high-noise phase gets the motion-enhanced conditioning (its motion_amplitude and color_protect live there), the low-noise phase gets the original, color-stable reference conditioning with correct_strength. You're getting the Wan 2.2 two-pass architecture, but with the motion kick applied in the phase where it belongs.
The inputs that matter
high_model/low_model- the two checkpoints.low_modelis where you'd load a Wan 2.2 with a LightX2V-style speed LoRA applied.high_positive/high_negative/low_positive/low_negative- the four conditionings, straight from PainterI2VAdvanced.switch_at_step- which step the high-noise phase hands off. Default 2. On 20 steps, that means the fast/low model does most of the work; raise it if you want more full-quality motion.high_cfg/low_cfg- both default to 8, standard Wan territory.steps,sampler_name,scheduler,noise_seed,latent_image- all behave like a normal sampler.
Output is a single latent, which goes to VAE decode like any other. return_leftover_noise and add_noise are for chaining - leave them at their defaults unless you know you're handing a half-denoised latent to something else.
Installing it
Same pack, same steps as PainterI2VExtend: ComfyUI Manager (search "Painter I2V AIO") or
cd ComfyUI/custom_nodes
git clone https://github.com/LDNKS094/ComfyUI-Painter-I2V-AIO
Then restart. No extra Python dependencies; the node uses only stock ComfyUI sampling internals.
Where people get burned
The most common mistake is wiring this to the wrong conditioning node. PainterI2VExtend only outputs positive/negative - those go to PainterSampler (basic), not here. This node needs the four-way conditioning only PainterI2VAdvanced produces. And check switch_at_step vs end_at_step: the node clamps them so the low phase always gets at least one step, but if you set them almost equal you collapse the dual-phase design back into a single-phase run and defeat the whole point. Also note it's a V3-API node - if it doesn't appear, update ComfyUI.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| high_model | MODEL | — | |
| low_model | MODEL | — | |
| add_noise | COMBO | enable | 2 options: enable, disable |
| noise_seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| high_cfg | FLOAT | 8.000–100 | — |
| low_cfg | FLOAT | 8.000–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| high_positive | CONDITIONING | — | |
| high_negative | CONDITIONING | — | |
| low_positive | CONDITIONING | — | |
| low_negative | CONDITIONING | — | |
| latent_image | LATENT | — | |
| start_at_step | INT | 00–10000 | — |
| switch_at_step | INT | 21–10000 | — |
| end_at_step | INT | 100000–10000 | — |
| return_leftover_noise | COMBO | disable | 2 options: disable, enable |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |