๐๏ธ Smart USDU Universal
One upscaler node with diffdiff and ControlNet on toggle switches
- image
- model
- conditionings
- negative
- vae
- upscale_model
- denoise_mask
- model_patch
- control_image
- control_mask
- IMAGE
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.
Inputs (33)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | โ | |
| 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 | โ | |
| upscale_by | FLOAT | 2.000.05โ4 | โ |
| 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 | โ |
| upscale_model | UPSCALE_MODEL | โ | |
| mode_type | COMBO | 3 options: Linear, Chess, None | |
| tile_width | INT | 51264โ8192 | โ |
| tile_height | INT | 51264โ8192 | โ |
| mask_blur | INT | 80โ64 | โ |
| tile_padding | INT | 320โ8192 | โ |
| 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 | โ |
| force_uniform_tiles | BOOLEAN | true | โ |
| 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 (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | โ |