Nodes/ComfyUI-ArchAi3d-Qwen/๐ŸŽ›๏ธ Smart USDU Universal (Custom Sample)
ComfyUI Node

๐ŸŽ›๏ธ Smart USDU Universal (Custom Sample)

The universal upscaler, with the custom-sampler override bolted on

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐ŸŽ›๏ธ Smart USDU Universal (Custom Sample)
  • image
  • model
  • conditionings
  • negative
  • vae
  • denoise_mask
  • model_patch
  • control_image
  • control_mask
  • upscale_model
  • custom_sampler
  • custom_sigmas
  • IMAGE
โ—„enable_diffdifftrueโ–บ
โ—„enable_controlnettrueโ–บ
โ—„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โ–บ

Take the Smart USDU Universal - the node with enable_diffdiff and enable_controlnet toggles - and add custom_sampler + custom_sigmas sockets, and you get this. It's the subclass variant that keeps every feature the Universal offers while letting you run the whole tiled pipeline on a sampler object or sigma schedule that isn't in the sampler_name dropdown. For most people this is overkill; for the person whose workflow is built around a specific custom sampler, it's the version that doesn't force a compromise.

The class hierarchy in the source is literal here: the Custom Sample version inherits from the Universal and appends the two sockets, so feature-for-feature it's identical plus the sampler override. upscale_model also moves to optional, so you can run the upscale-factor path without forcing a pixel-upscale model.

The inputs

Everything from the Universal: image, model, per-tile conditionings, negative, vae, upscale_by, the sampler block, mode_type, tile size/padding/blur, seam fix, tiled_decode, plus the two feature toggles. Optional block carries diffdiff (denoise_mask, multiplier), ControlNet (model_patch, control_image cropped per tile, control_strength, control_mask), upscale_model, and the new custom_sampler (SAMPLER) + custom_sigmas (SIGMAS). Skip the two custom sockets and it behaves exactly like the plain Universal. Output is one IMAGE.

Installing it

One of ~100 nodes in 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. Only ComfyUI's bundled torch/numpy/Pillow needed here; heavy deps in requirements.txt serve other pack nodes. Free for personal use; commercial use needs the paid license.

The honest take

This is the "have your cake and eat it" node: all the toggles, all the features, plus sampler control. The cost is that every silent-failure mode in the family is on the same node - ControlNet needs both model_patch and control_image; enable_* toggles bypass features invisibly; multiplier flips strength at 1.0; conditioning count mismatch reuses the last entry; and now if custom_sigmas doesn't match your steps, the schedule can do something you didn't intend. Use the toggles to bisect problems, keep your sigma schedule in sync with steps, and this becomes the only upscaler node you need in that workflow.

CategoryArchAi3d/Upscaling/USDU

Inputs (35)

NameTypeDefaultDescription
imageIMAGEโ€”
enable_diffdiffBOOLEANtrueEnable/disable Differential Diffusion
enable_controlnetBOOLEANtrueEnable/disable ControlNet per-tile
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โ€”