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

๐ŸŽ›๏ธ Smart USDU Universal

One upscaler node with diffdiff and ControlNet on toggle switches

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐ŸŽ›๏ธ Smart USDU Universal
  • image
  • model
  • conditionings
  • negative
  • vae
  • upscale_model
  • denoise_mask
  • model_patch
  • control_image
  • control_mask
  • 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โ–บ

The Smart USDU Universal is what you get when you fuse the DiffDiff + ControlNet node with two boolean switches: enable_diffdiff and enable_controlnet, both defaulted to True. The whole point is that you can turn features on and off from the node's widgets instead of rewiring the graph. Want to A/B test whether the ControlNet is doing anything? Flick one toggle. Suspect the diffdiff mask is making things worse? Flick the other. It's the same underlying pipeline as the separate DiffDiff and ControlNet nodes - this is just the version that keeps both code paths warm and lets you bisect problems live.

For a workflow you're actively tuning, that's worth a lot. The separate-node versions force you to either duplicate graphs or keep unplugging wires to compare. Here, the toggles turn the node into its own experiment.

What's on the board

The full pipeline in one required block: image, model, per-tile conditionings, negative, vae, upscale_by + upscale_model, the sampler block, mode_type, tile size/padding/blur, seam-fix settings, force_uniform_tiles, tiled_decode. The optional block carries both feature sets:

  • DiffDiff: denoise_mask (white = more denoise, black = less), multiplier (<1 = stronger, >1 = weaker)
  • ControlNet: model_patch, control_image (cropped per tile), control_strength, control_mask

Output is a single IMAGE. Note the enable_* toggles don't remove the inputs - they just bypass the feature internally, so you can leave everything wired and still switch.

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 after. No extra deps for this node beyond ComfyUI's bundled torch/numpy/Pillow; the heavyweight requirements serve other pack features. Free for personal use, paid license for commercial work.

The traps

The toggles make it easy to forget which features are actually on - if your ControlNet isn't having any effect, check enable_controlnet before debugging the preprocessor, and remember that ControlNet also needs both model_patch and control_image connected. Same for diffdiff: with enable_diffdiff on but no denoise_mask, it runs as plain USDU (that's the documented fallback, not a bug). And the usual family rules hold - multiplier flips strength at 1.0, and a conditioning count that doesn't match the tile count silently reuses the last entry.

CategoryArchAi3d/Upscaling/USDU

Inputs (33)

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โ€”
upscale_modelUPSCALE_MODELโ€”
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)

Outputs (1)

NameTypeDescription
IMAGEIMAGEโ€”