Tile Assembly
Stitch tiles back into one image without the seams
- tiles
- tile_pipe
- image
Tiling is how you upsample or detail a big image on limited VRAM: split it, process each tile, stitch it back. The stitching is the part that usually ruins the result - hard seams where tile edges meet. Tile Assembly is the Eclipse node that puts it back together with gradient blending, so the seams mostly disappear. You feed it the processed tile batch and the tile-pipe metadata from Tile Split, set a blend width, and get the full image back.
The pair to remember: Tile Assembly is the other half of Tile Split [Eclipse]. Tile Split chops the image and emits an eclipse_tile_pipe carrying each tile's position, the original size, and the grid dimensions; Tile Assembly consumes that pipe to know where everything goes. That's the whole design - no manual grid math, the split node carries the assembly instructions for you.
How it works
tiles- the batch of processed tile images (after whatever per-tile processing you ran - upscale, detail, inpaint).tile_pipe- the metadata from Tile Split: positions, original size, grid size.padding(default 64) - the gradient blend width in pixels at tile overlaps. Higher = softer, wider blend zone; 0 = hard cut.
The assembly logic walks the tiles, and at each overlap it blends the two edges with a gradient mask rather than pasting a hard boundary. It handles horizontal and vertical overlaps (and their combination) and crops the right blend regions before compositing. If padding is zero it degrades to a hard cut - usable, but that's where seams live. The output is the reconstructed full image (as a list).
The mechanism is pure PIL/torch image math - no model, no VRAM pressure beyond the image itself. That makes it fast and reliable, which is what you want after a long tiled processing pass.
Where it fits
Any tiled upscaling or detailing workflow where the seams matter. That's the tiled-diffusion style of arbitrary output size on limited VRAM from the upscaling playbook - split, process, blend back. If you've been assembling tiles with a paste node and fighting the seams, this is the upgrade: the blending is the whole point, not a bonus.
Installing it
Part of ComfyUI_Eclipse:
git clone https://github.com/r-vage/ComfyUI_Eclipse custom_nodes/ComfyUI_Eclipse
Or ComfyUI Manager → search "ComfyUI_Eclipse" → install and restart. No models. Pillow and torch, which ComfyUI already has.
Gotchas
The classic mistake is wiring tiles without the tile_pipe - the node needs the metadata to know the grid, and the input is required, so a missing pipe is an immediate error rather than a silent bad output. And padding interacts with how your tiles overlap: if Tile Split used a small overlap, a large padding value can exceed it (the code caps blend size at the overlap, so it degrades gracefully rather than crashing). Start at the 64 default and raise it if you still see a line. Old RvTools-era workflows predating v4.0.0 need the pack's migration tool.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| tiles | IMAGE | Batch of processed tile images. | |
| tile_pipe | eclipse_tile_pipe | Tile pipe from Tile Split node (positions, original size, grid size). | |
| padding | INT | 640–512 | Gradient blend width in pixels at tile overlaps. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | Reconstructed full image. |