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

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

Solver-driven upscaling with feather masks so tile edges stop fighting

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐ŸŽ›๏ธ Smart USDU Universal (No Upscale) V3
  • upscaled_image
  • model
  • conditionings
  • negative
  • vae
  • denoise_mask
  • model_patch
  • control_image
  • control_mask
  • image
  • debug_info
  • debug_tiles
  • debug_feather_masks
  • debug_combined
โ—„output_width1024โ–บ
โ—„output_height1024โ–บ
โ—„tiles_x2โ–บ
โ—„tiles_y2โ–บ
โ—„safe_guardtrueโ–บ
โ—„enable_diffdifftrueโ–บ
โ—„enable_controlnettrueโ–บ
โ—„feather_enabledtrueโ–บ
โ—„feather_width16โ–บ
โ—„feather_blur8โ–บ
โ—„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โ–บ

The V3 of the solver-driven Universal upscaler answers a complaint that shows up constantly in tiled-upscale threads: tiles don't match at the boundaries. Each tile is an independent img2img pass, so even with overlapping context and mask_blur, adjacent tiles can land on slightly different colors or contrast, and you see the grid. V3's answer is a feather mask: a gradient zone at each tile's interior edges that tells the sampler to trust the source more near the boundary and regenerate more toward the tile center.

The feathering is the new headline feature: feather_enabled (default True), feather_width (16px gradient zone, must stay below tile_padding), and feather_blur (8px Gaussian). Interior edges get a 1.0โ†’0.0 gradient, while true outer image boundaries stay un-feathered so the image's edges don't fade. The practical effect is that tile-to-tile color drift - the thing that makes multi-tile upscales look patchworked - gets smoothed before blending, on top of the usual USDU seam-fix machinery.

What's on the board

Same solver contract as V2: upscaled_image + output_width/output_height/tiles_x/tiles_y/tile_width/tile_height/tile_padding from the Smart Tile Solver, safe_guard validation, the enable_diffdiff/enable_controlnet toggles, per-tile conditionings, sampler block, mode_type, seam fix, tiled_decode. Optional: denoise_mask, multiplier, model_patch, control_image, control_strength, control_mask.

The outputs are where V3 shows its debugging pedigree: image, debug_info, plus three visual debug outputs - debug_tiles (grid of input tile crops), debug_feather_masks (the masks as grayscale images), and debug_combined (tiles with the feather zones tinted red). If you want to see what the feather mask is doing, that last output is gold.

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 heavy deps in requirements.txt serve other pack nodes. Free for personal use; commercial use needs the paid license.

Where it trips people up

feather_width must be less than tile_padding or the gradient can't fit inside the padded context - the tooltip calls it out, and the failure mode is muddy edges. Feathering trades a little per-tile regenerated detail for consistency: if your upscale looks too blended and soft, lower feather_width or turn feather_enabled off rather than fighting it. And it inherits the family rules - solver values in, raw source out, safe_guard on until you trust the graph.

CategoryArchAi3d/Upscaling/USDU

Inputs (38)

NameTypeDefaultDescription
upscaled_imageIMAGEPre-upscaled image from Matrix Search
output_widthINT102464โ€“8192โ€”
output_heightINT102464โ€“8192โ€”
tiles_xINT21โ€“64โ€”
tiles_yINT21โ€“64โ€”
safe_guardBOOLEANtrueโ€”
enable_diffdiffBOOLEANtrueโ€”
enable_controlnetBOOLEANtrueโ€”
feather_enabledBOOLEANtrueEnable tile feather mask for color consistency
feather_widthINT164โ€“128Width of gradient zone (must be < tile_padding)
feather_blurINT80โ€“64Gaussian blur radius for feather gradient
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โ€“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โ€”
tiled_decodeBOOLEANfalseโ€”
denoise_maskoptMASKOptional mask for per-pixel denoise
multiplieroptFLOAT1.000-10โ€“10โ€”
model_patchoptMODEL_PATCHControlNet patch
control_imageoptIMAGEControl image for ControlNet
control_strengthoptFLOAT1.00-10โ€“10โ€”
control_maskoptMASKOptional mask for ControlNet

Outputs (5)

NameTypeDescription
imageIMAGEโ€”
debug_infoSTRINGโ€”
debug_tilesIMAGEโ€”
debug_feather_masksIMAGEโ€”
debug_combinedIMAGEโ€”