Simple Tile Sampler
A KSampler that knows it's sampling a tile
- tile
- model
- positive
- negative
- vae
- denoise_mask
- control_image
- controlnet
- processed_tile
In a tiled upscale, the sampler is where the actual work happens - and a plain KSampler is missing two things you want here: a way to denoise some pixels more than others (so seams stay locked to the neighbors), and a way to keep each tile faithful to the source (that's ControlNet Tile's whole job). This node is a KSampler wrapper with both options built in. Feed it one cropped tile, get back one processed tile.
It's the sampling core of the "Simple USDU" tiling subsystem in ComfyUI-ArchAi3d-Qwen, Amir Ferdos's pack. The pipeline it slots into is Cropper → Sampler → Compositor, and this is the middle step where pixels actually get regenerated.
What the extra inputs do
Beyond the usual sampler fields (model, positive/negative conditioning, vae, seed, steps, cfg, sampler_name, scheduler, and a denoise that defaults to 0.5), it has two optional paths that make it tile-aware:
- denoise_mask - this is Differential Diffusion. Instead of one denoise strength for the whole latent, the node resizes your mask to latent resolution and sets it as the latent's
noise_mask, so white regions denoise fully and black regions stay locked. Wire the Simple Edge Mask output here and your tile regenerates in the center while its borders stay put for blending. - control_image + controlnet + control_strength - applies a ControlNet (via ComfyUI's ControlNetApplyAdvanced) to the tile's conditioning. Feed it the original cropped tile as the control image and a Tile ControlNet, and the model is guided to preserve the source structure while adding detail - the single most reliable fix for the patchwork-artifact problem that plagues tiled upscaling without guidance.
Inputs & outputs at a glance
Required: tile (the cropped IMAGE), model, positive, negative, vae, seed, steps, cfg, sampler_name, scheduler, denoise. Optional: denoise_mask, control_image, controlnet, control_strength (default 1.0). Single output: processed_tile (IMAGE).
The mechanism is straightforward under the hood: VAE-encode the tile → apply noise mask / ControlNet if given → run common_ksampler → VAE-decode back. Nothing exotic - which is the point. It's a sampler shaped for tiles.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/amir84ferdos/ComfyUI-ArchAi3d-Qwen.git
cd ComfyUI-ArchAi3d-Qwen
pip install -r requirements.txt
Or ComfyUI Manager → "ArchAi3d Qwen". No model downloads. Free for personal use; commercial use needs the pack's paid license.
The honest take
This is a per-tile node, so a full upscale means one of these per tile (or a loop). On a big grid that's a lot of wiring, which is exactly why the Smart Tile side of this pack uses SEGS and Impact Pack's DetailerForEach machinery instead. Where this node earns its place: when you're building the Simple USDU pipeline deliberately and want to see - and control - exactly how each tile is sampled. Start with denoise around 0.4–0.5, add the Tile ControlNet before you start raising it, and keep the DiffDiff mask if seam consistency is your priority.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| tile | IMAGE | — | |
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 7.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.500–1 | — |
| denoise_maskopt | MASK | — | |
| control_imageopt | IMAGE | — | |
| controlnetopt | CONTROL_NET | — | |
| control_strengthopt | FLOAT | 1.000–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| processed_tile | IMAGE | — |