๐ฎ Smart USDU DiffDiff + CN (Custom Sample)
Diffdiff + ControlNet + your own sampler
- image
- model
- conditionings
- negative
- vae
- denoise_mask
- model_patch
- control_image
- control_mask
- upscale_model
- custom_sampler
- custom_sigmas
- IMAGE
This is the maxed-out version of the USDU family: differential diffusion for per-pixel denoise, per-tile ControlNet for structure, and custom_sampler + custom_sigmas sockets so the whole tiled pipeline runs on a sampler or sigma schedule that isn't in the dropdown. It's the node to pick when you're porting a workflow that already depends on a custom sampler (Align Your Steps, a model-specific schedule) and you refuse to give that up just to tile an upscale.
Real talk: this is the one where complexity is the point. You get every feature the pack's upscalers offer in a single node - which means every knob can bite you at once. The person who wants this already knows their sampler, already has a canny or depth condition workflow, and just wants it all tiled without rebuilding anything.
What's wired in
From the diffdiff side: optional denoise_mask (white = more denoise, black = less) and multiplier (<1 = stronger, >1 = weaker). From the ControlNet side: model_patch, control_image (cropped per tile), control_strength, control_mask. From the USDU core: upscale_by, tile size/padding/blur, mode_type, seam-fix block, per-tile conditionings list, tiled_decode. Output is one IMAGE.
The differences that make it "Custom Sample":
custom_sampler(SAMPLER) andcustom_sigmas(SIGMAS) are optional - skip them and it runs onsampler_name/scheduler/stepsas usual.upscale_modelis optional here, so the pixel-upscale path and the sampler override don't force each other.
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, and you're set - this node needs only ComfyUI's bundled torch/numpy/Pillow; the heavyweight deps in requirements.txt belong to other pack features. Free for personal use, paid license for commercial work.
The honest verdict
If you can name the exact problem this solves, it solves it well: custom sampler + tiling + control, no reimplementation. If you can't, you're carrying three feature sets you don't need and every one of them has a silent-failure mode - ControlNet needs both model_patch and control_image to engage, the multiplier flips strength at 1.0, and a conditioning count that doesn't match the tile count silently reuses the last entry. Start with the plain DiffDiff node, get that working, then add features one at a time.
Inputs (33)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | โ | |
| 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 | โ |
| 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) | |
| upscale_modelopt | UPSCALE_MODEL | โ | |
| custom_sampleropt | SAMPLER | โ | |
| custom_sigmasopt | SIGMAS | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | โ |