๐๏ธ Smart USDU Universal (No Upscale) V2
Same solver-driven upscaler, now with a debug string to read the run
- upscaled_image
- model
- conditionings
- negative
- vae
- denoise_mask
- model_patch
- control_image
- control_mask
- image
- debug_info
The V2 of the solver-driven Universal (No Upscale) is a small but useful step: it adds a second output, debug_info (STRING), alongside the IMAGE. Everything else is the same contract as V1 - pre-upscaled upscaled_image plus output_width, output_height, tiles_x, tiles_y, tile_width, tile_height, tile_padding from the Smart Tile Solver, the safe_guard validation switch, and the Universal feature toggles (enable_diffdiff, enable_controlnet).
So why would you pick V2 over V1? Debugging. Tile-upscaling failures are notoriously opaque - a seam shows up and you don't know which tile did it, or the grid silently came out wrong. The debug_info string gives you a text log of what the node actually did: tile layout, per-tile processing, conditioning count, warnings. Wire it to a text display node or just read it in the console, and the mystery usually evaporates.
That's a bigger deal than it sounds, because the two silent failure modes in this family - conditioning count โ tile count, and a safe_guard bypass hiding a wrong value - are exactly the kind of thing a debug log makes visible. If you're still tuning your first solverโUSDU graph, take V2 over V1. When it's stable and you want a cleaner node, V1 is fine.
The inputs, briefly
Same required set as V1: upscaled_image, output_width/output_height/tiles_x/tiles_y/tile_width/tile_height/tile_padding (all "from Matrix Search" per the tooltips), safe_guard, the two toggles, model/conditionings/negative/vae, the sampler block, mode_type, mask_blur, seam-fix settings, tiled_decode. Optional: denoise_mask, multiplier, model_patch, control_image, control_strength, control_mask. Outputs: image + debug_info.
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 own torch/numpy/Pillow required; the heavy deps in requirements.txt serve other pack nodes. Free for personal/non-commercial use; commercial work needs the paid license.
The usual suspects
Same gotchas as V1, plus one new habit: actually read the debug_info when a seam or grid problem shows up - it usually names the tile and the mismatch. Keep safe_guard on during setup, feed the solver's upscaled image (not the raw source), and remember the tile sizes here are output-space.
Inputs (35)
| Name | Type | Default | Description |
|---|---|---|---|
| upscaled_image | IMAGE | Pre-upscaled image from Matrix Search | |
| output_width | INT | 102464โ8192 | Expected output width from Matrix Search |
| output_height | INT | 102464โ8192 | Expected output height from Matrix Search |
| tiles_x | INT | 21โ64 | Number of tile columns from Matrix Search |
| tiles_y | INT | 21โ64 | Number of tile rows from Matrix Search |
| safe_guard | BOOLEAN | true | Validate all values match Matrix Search exactly. Error if ANY mismatch. |
| enable_diffdiff | BOOLEAN | true | Enable/disable Differential Diffusion |
| enable_controlnet | BOOLEAN | true | Enable/disable ControlNet per-tile |
| model | MODEL | โ | |
| conditionings | CONDITIONING_LIST | โ | |
| negative | CONDITIONING | โ | |
| vae | VAE | โ | |
| seed | INT | 00โ18446744073709550000 | โ |
| steps | INT | 201โ10000 | โ |
| cfg | FLOAT | 8.000โ100 | โ |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 0.200โ1 | โ |
| mode_type | COMBO | 3 options: Linear, Chess, None | |
| tile_width | INT | 51264โ8192 | Tile width from Matrix Search |
| tile_height | INT | 51264โ8192 | Tile height from Matrix Search |
| mask_blur | INT | 80โ64 | โ |
| tile_padding | INT | 320โ8192 | Overlap/padding from Matrix Search |
| seam_fix_mode | COMBO | 4 options: None, Band Pass, Half Tile, Half Tile + Intersections | |
| seam_fix_denoise | FLOAT | 1.000โ1 | โ |
| seam_fix_width | INT | 640โ8192 | โ |
| seam_fix_mask_blur | INT | 80โ64 | โ |
| seam_fix_padding | INT | 160โ8192 | โ |
| tiled_decode | BOOLEAN | false | โ |
| denoise_maskopt | MASK | Optional mask for per-pixel denoise. White=more denoise, Black=less | |
| multiplieropt | FLOAT | 1.000-10โ10 | Controls effect strength. <1=stronger, >1=weaker |
| model_patchopt | MODEL_PATCH | ControlNet patch (from ModelPatchLoader) | |
| control_imageopt | IMAGE | Control image (e.g., Canny/Depth) - will be cropped per tile | |
| control_strengthopt | FLOAT | 1.00-10โ10 | ControlNet strength |
| control_maskopt | MASK | Optional mask for ControlNet (separate from denoise_mask) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | โ |
| debug_info | STRING | โ |