Nodes/ComfyUI-ArchAi3d-Qwen/๐ŸŽฎ Smart USDU DiffDiff + CN (Custom Sample)
ComfyUI Node

๐ŸŽฎ Smart USDU DiffDiff + CN (Custom Sample)

Diffdiff + ControlNet + your own sampler

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐ŸŽฎ Smart USDU DiffDiff + CN (Custom Sample)
  • image
  • model
  • conditionings
  • negative
  • vae
  • denoise_mask
  • model_patch
  • control_image
  • control_mask
  • upscale_model
  • custom_sampler
  • custom_sigmas
  • IMAGE
โ—„upscale_by2.00โ–บ
โ—„seed0โ–บ
โ—„steps20โ–บ
โ—„cfg8.00โ–บ
โ—„sampler_nameโ–พโ–บ
โ—„schedulerโ–พโ–บ
โ—„denoise0.20โ–บ
โ—„mode_typeโ–พโ–บ
โ—„tile_width512โ–บ
โ—„tile_height512โ–บ
โ—„mask_blur8โ–บ
โ—„tile_padding32โ–บ
โ—„seam_fix_modeโ–พโ–บ
โ—„seam_fix_denoise1.00โ–บ
โ—„seam_fix_width64โ–บ
โ—„seam_fix_mask_blur8โ–บ
โ—„seam_fix_padding16โ–บ
โ—„force_uniform_tilestrueโ–บ
โ—„tiled_decodefalseโ–บ
โ—„multiplier1.000โ–บ
โ—„control_strength1.00โ–บ

This is the maxed-out version of the USDU family: differential diffusion for per-pixel denoise, per-tile ControlNet for structure, and custom_sampler + custom_sigmas sockets so the whole tiled pipeline runs on a sampler or sigma schedule that isn't in the dropdown. It's the node to pick when you're porting a workflow that already depends on a custom sampler (Align Your Steps, a model-specific schedule) and you refuse to give that up just to tile an upscale.

Real talk: this is the one where complexity is the point. You get every feature the pack's upscalers offer in a single node - which means every knob can bite you at once. The person who wants this already knows their sampler, already has a canny or depth condition workflow, and just wants it all tiled without rebuilding anything.

What's wired in

From the diffdiff side: optional denoise_mask (white = more denoise, black = less) and multiplier (<1 = stronger, >1 = weaker). From the ControlNet side: model_patch, control_image (cropped per tile), control_strength, control_mask. From the USDU core: upscale_by, tile size/padding/blur, mode_type, seam-fix block, per-tile conditionings list, tiled_decode. Output is one IMAGE.

The differences that make it "Custom Sample":

  • custom_sampler (SAMPLER) and custom_sigmas (SIGMAS) are optional - skip them and it runs on sampler_name/scheduler/steps as usual.
  • upscale_model is optional here, so the pixel-upscale path and the sampler override don't force each other.

Installing it

Part of ComfyUI-ArchAi3d-Qwen by Amir Ferdos (ArchAi3d). ComfyUI Manager โ†’ search "ArchAi3d Qwen" โ†’ install โ†’ restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/amir84ferdos/ComfyUI-ArchAi3d-Qwen.git
cd ComfyUI-ArchAi3d-Qwen
pip install -r requirements.txt

Restart, and you're set - this node needs only ComfyUI's bundled torch/numpy/Pillow; the heavyweight deps in requirements.txt belong to other pack features. Free for personal use, paid license for commercial work.

The honest verdict

If you can name the exact problem this solves, it solves it well: custom sampler + tiling + control, no reimplementation. If you can't, you're carrying three feature sets you don't need and every one of them has a silent-failure mode - ControlNet needs both model_patch and control_image to engage, the multiplier flips strength at 1.0, and a conditioning count that doesn't match the tile count silently reuses the last entry. Start with the plain DiffDiff node, get that working, then add features one at a time.

CategoryArchAi3d/Upscaling/USDU

Inputs (33)

NameTypeDefaultDescription
imageIMAGEโ€”
modelMODELโ€”
conditioningsCONDITIONING_LISTโ€”
negativeCONDITIONINGโ€”
vaeVAEโ€”
upscale_byFLOAT2.000.05โ€“4โ€”
seedINT00โ€“18446744073709550000โ€”
stepsINT201โ€“10000โ€”
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
denoiseFLOAT0.200โ€“1โ€”
mode_typeCOMBO3 options: Linear, Chess, None
tile_widthINT51264โ€“8192โ€”
tile_heightINT51264โ€“8192โ€”
mask_blurINT80โ€“64โ€”
tile_paddingINT320โ€“8192โ€”
seam_fix_modeCOMBO4 options: None, Band Pass, Half Tile, Half Tile + Intersections
seam_fix_denoiseFLOAT1.000โ€“1โ€”
seam_fix_widthINT640โ€“8192โ€”
seam_fix_mask_blurINT80โ€“64โ€”
seam_fix_paddingINT160โ€“8192โ€”
force_uniform_tilesBOOLEANtrueโ€”
tiled_decodeBOOLEANfalseโ€”
denoise_maskoptMASKOptional mask for per-pixel denoise. White=more denoise, Black=less
multiplieroptFLOAT1.000-10โ€“10Controls effect strength. <1=stronger, >1=weaker
model_patchoptMODEL_PATCHControlNet patch (from ModelPatchLoader)
control_imageoptIMAGEControl image (e.g., Canny/Depth) - will be cropped per tile
control_strengthoptFLOAT1.00-10โ€“10ControlNet strength
control_maskoptMASKOptional mask for ControlNet (separate from denoise_mask)
upscale_modeloptUPSCALE_MODELโ€”
custom_sampleroptSAMPLERโ€”
custom_sigmasoptSIGMASโ€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEโ€”