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

๐ŸŽ›๏ธ Smart USDU Universal (No Upscale)

The universal upscaler that takes its marching orders from the Tile Solver

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐ŸŽ›๏ธ Smart USDU Universal (No Upscale)
  • upscaled_image
  • model
  • conditionings
  • negative
  • vae
  • denoise_mask
  • model_patch
  • control_image
  • control_mask
  • IMAGE
โ—„output_width1024โ–บ
โ—„output_height1024โ–บ
โ—„tiles_x2โ–บ
โ—„tiles_y2โ–บ
โ—„safe_guardtrueโ–บ
โ—„enable_diffdifftrueโ–บ
โ—„enable_controlnettrueโ–บ
โ—„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โ–บ
โ—„tiled_decodefalseโ–บ
โ—„multiplier1.000โ–บ
โ—„control_strength1.00โ–บ

Here's where the pack's architecture becomes visible. The Smart Tile Solver V6.2 computes an optimal tile grid and hands you a bundle of numbers; this node - Smart USDU Universal (No Upscale) - is built to receive those numbers. It drops the internal upscaling and takes the pre-upscaled upscaled_image plus explicit output_width, output_height, tiles_x, tiles_y, tile_width, tile_height, and tile_padding inputs, then runs the full Universal pipeline (diffdiff + ControlNet toggles) on exactly that grid.

The design intent is a clean split: the solver plans and upscales, this node does the tiled diffusion pass. No re-deriving grid math inside the node, no drift between what was planned and what gets sampled.

The important bit: safe_guard

safe_guard defaults to True and validates that the values match what the solver produced - the source throws an error on any mismatch. That's a real convenience when you're wiring the solver's INT outputs straight across: it catches a mis-typed tile_width before it wastes a whole render. If you're deliberately overriding the solver's plan, flip it off - but then you own the consequences.

Otherwise it's the Universal feature set: enable_diffdiff / enable_controlnet toggles, per-tile conditionings, the sampler block, mode_type, mask_blur, seam-fix settings, tiled_decode. Optional block: denoise_mask, multiplier, model_patch, control_image, control_strength, control_mask. Note there's no upscale_model or upscale_by anywhere - the upscale already happened. Output is a single IMAGE.

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. Only ComfyUI's own torch/numpy/Pillow are needed; the heavyweight deps in requirements.txt belong to other pack nodes. Free for personal use; commercial use requires the paid license.

Common gotchas

The #1 failure is feeding the raw source image in - everything downstream then runs at 1.0 scale with a grid that doesn't match. Keep safe_guard on while you build the graph so a mismatch errors loudly instead of silently producing garbage. And remember tile_width/tile_height here are the solver's output-space tile sizes, not your input image's dimensions.

CategoryArchAi3d/Upscaling/USDU

Inputs (35)

NameTypeDefaultDescription
upscaled_imageIMAGEPre-upscaled image from Matrix Search
output_widthINT102464โ€“8192Expected output width from Matrix Search
output_heightINT102464โ€“8192Expected output height from Matrix Search
tiles_xINT21โ€“64Number of tile columns from Matrix Search
tiles_yINT21โ€“64Number of tile rows from Matrix Search
safe_guardBOOLEANtrueValidate all values match Matrix Search exactly. Error if ANY mismatch.
enable_diffdiffBOOLEANtrueEnable/disable Differential Diffusion
enable_controlnetBOOLEANtrueEnable/disable ControlNet per-tile
modelMODELโ€”
conditioningsCONDITIONING_LISTโ€”
negativeCONDITIONINGโ€”
vaeVAEโ€”
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โ€“8192Tile width from Matrix Search
tile_heightINT51264โ€“8192Tile height from Matrix Search
mask_blurINT80โ€“64โ€”
tile_paddingINT320โ€“8192Overlap/padding from Matrix Search
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โ€”
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โ€”