Nodes/ComfyUI-Desert-Pixel-Nodes/DP Advanced Sampler
ComfyUI Node

DP Advanced Sampler

A KSampler with hires upscale and tiling baked in

By DesertPixelAi·Created 2 years ago·Updated about a year ago· 25
DP Advanced Sampler
  • model
  • vae
  • positive
  • negative
  • latent_image
  • sampled_latent
  • sampled_image
  • upscaled_latent
  • upscaled_image
  • sampler_info
seed0
steps20
cfg8.0
sampler_name
scheduler
denoise1.00
enable_upscalefalse
two_step_upscalefalse
scale_by1.50
upscale_steps10
upscale_cfg7.0
upscale_sampler_name
upscale_scheduler
upscale_denoise0.50
enable_splitfalse
split_rows2
split_columns4
overlap_pixels0

If you're tired of wiring a KSampler, then an upscale latent, then a second KSampler for the hires pass, then a tiled setup when the image gets too big for VRAM - this node collapses all of that into one box. It samples, and then optionally upscales and re-samples, and then optionally does that upscale in overlapping tiles so a huge target size doesn't blow up your card. One node, three jobs.

It's part of Desert Pixel Nodes, a sprawling 105+ node personal pack from DesertPixelAi. The pack isn't a name you'll see argued about on r/comfyui - it's more the kind of thing people quietly fold into their own graphs - but this sampler is the most-searched node in it, and it's easy to see why: the all-in-one hires-fix-plus-tiling combo is genuinely convenient.

How it works

The first half is an ordinary KSampler. You give it a model, a latent_image, your positive and negative conditioning, and the usual seed / steps / cfg / sampler_name / scheduler / denoise. It denoises and hands you back a latent - and because you also wire in a vae, it decodes and hands you a finished image too.

Turn on enable_upscale and it runs a second pass: it scales the latent up by scale_by (1.5x by default) and re-samples with its own separate upscale_steps, upscale_cfg, upscale_sampler_name, upscale_scheduler, and upscale_denoise. That's a classic hires fix - upscale_denoise around 0.5 is the sweet spot, low enough to keep the composition, high enough to add detail. two_step_upscale splits that into two gentler jumps instead of one big one.

Turn on enable_split and the upscale pass runs in tiles: split_rows × split_columns chunks with overlap_pixels of blend between them. This is the same trick as Ultimate SD Upscale or Tiled Diffusion - it lets you hit 4K on a modest GPU by never holding the whole image in VRAM at once.

The inputs and outputs that matter

For a first run, the ones you actually touch: steps, cfg, sampler_name/scheduler, and denoise. Leave the upscale and split blocks off until the base image looks right.

Outputs: sampled_latent and sampled_image are your base result; upscaled_latent and upscaled_image are populated only when upscale is on. sampler_info is a text string of the settings you used - pipe it into a save node to stamp your parameters onto the file.

How to install it

Easiest path is ComfyUI Manager: Install Custom Nodes, search Desert Pixel, install, restart. Manual works too:

cd ComfyUI/custom_nodes
git clone https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes

then restart ComfyUI. If the repo ships a requirements.txt, pip install -r it first. No model files to download - this node uses whatever checkpoint and VAE you already have. The nodes land under the DP category in the node browser.

Common issues & troubleshooting

Your sampler choice matters more than the node. This is a plain KSampler under the hood, so the same rules apply: DPM++ 2M Karras is the safe default for SD 1.5 and SDXL, but on a flow-matching model like Flux or Z-Image, Karras and exponential schedulers fail outright - use Euler-family on beta or simple instead. Check what your checkpoint is before carrying a habit across.

Tiled upscale gives you patchwork. The split upscale has no ControlNet Tile condition holding the tiles to the source, so at high denoise each tile can invent its own details and the seams show. Keep upscale_denoise modest (0.35–0.5), bump overlap_pixels up, and don't ask a single pass to both quadruple the size and hallucinate detail.

Nothing comes out of the upscaled outputs. They're empty unless enable_upscale is on. If you wired upscaled_image into your save node and got nothing, that's the switch.

CategoryDesert Pixel/sampling

Inputs (23)

NameTypeDefaultDescription
modelMODEL
vaeVAE
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.00–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
denoiseFLOAT1.000–1
enable_upscaleBOOLEANfalse
two_step_upscaleBOOLEANfalse
scale_byFLOAT1.500.01–8
upscale_stepsINT101–10000
upscale_cfgFLOAT7.00–100
upscale_sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
upscale_schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
upscale_denoiseFLOAT0.500–1
enable_splitBOOLEANfalse
split_rowsINT21–8
split_columnsINT41–8
overlap_pixelsINT00–128

Outputs (5)

NameTypeDescription
sampled_latentLATENT
sampled_imageIMAGE
upscaled_latentLATENT
upscaled_imageIMAGE
sampler_infoSTRING