Nodes/Comfyui_TTP_Toolset/TTP Smart Tile Assemble
ComfyUI Node Runs on cloud

TTP Smart Tile Assemble

The last node in the Smart Tile loop, and the one with the most dials

By TTPlanetPig·Created 2 years ago·Updated about a month ago· 1,030
TTP Smart Tile Assemble
  • sampled_tiles
  • tile_meta
  • tile_set
  • base_image
  • source_image
  • color_reference_image
  • image
  • weight_preview
blend_multiplier1.00
output_scale0.00
use_prioritytrue
tile_alignmentcenter_crop
edge_crop_px0
color_correctionoff
color_strength0.35
mask_blend_modemask_feather
pixel_alignmentoff
pixel_alignment_radius8
pixel_alignment_deviceauto
large_tile_policyuse_if_higher_resolution
large_tile_area_threshold0.55
min_tile_scale_ratio0.95
context_tile_weight0.25
assemble_deviceauto
assemble_modefinal_only
base_canvas_modeauto
weight_preview_moderaw_weight
small_tile_on_topfalse
auto_composite_policysafe_auto
replace_tile_shapemask_first
done

Every Smart Tile 2.0 workflow ends here. Once your per-tile img2img loop has finished (via TTP Smart Tile Loop Source → sampler → TTP Smart Tile Loop Collect), this node pastes every processed tile back onto a canvas - with feathering, masks, semantic priority, optional color correction, and optional pixel alignment - to produce the final image. It has by far the largest parameter list in the pack, which mostly exists because "paste a variable-size, object-aware tile set back together without visible seams" is a genuinely harder problem than a fixed grid's reassembly.

The setting that matters most first: assemble_mode. Default is final_only, and that's deliberate - the README is explicit that you should connect TTP Smart Tile Loop Collect.done to this node's done input, so unfinished loop passes return a cheap preview instead of doing the full, expensive composite every single tile. It only does the real assemble once, after done=true. Switch to always only if you specifically want a full recomposite after every tile (much slower, useful mainly for debugging mid-loop). One thing worth knowing: if you've enabled pixel_alignment, unfinished loop runs are automatically treated as final-only anyway, specifically to avoid repeating an expensive alignment pass on every tile.

The inputs and outputs that actually connect to the rest of your graph: sampled_tiles (your processed tiles from Loop Collect), tile_set and tile_meta (the layout and ranking data), and optionally base_image/source_image/color_reference_image depending on how you want gaps and color handled. Output is image (the assembled result) and weight_preview (a visualization of how much influence each region had - genuinely useful for debugging why a tile did or didn't win an overlap).

A handful of the settings worth understanding, not just defaulting through:

  • base_canvas_mode - auto by default, but the README specifically recommends black when you don't want the original source image showing through uncovered or low-weight areas. If your assembled result has faint ghosting of the original underneath your edits, this is usually why.
  • auto_composite_policy - safe_auto is the sane default (keeps background tiles low-priority, promotes detail tiles). replace_tile is for edit-style workflows where you want selected tiles to hard-replace the canvas rather than blend; pair it with replace_tile_shape (mask_first uses the object mask when present and hardens its interior like an inpaint stitch, tile_box_first ignores the mask entirely and replaces the full rectangular tile).
  • small_tile_on_top - off by default, but the README recommends flipping it on for any detail workflow, since it's what stops a small, high-priority face or eye tile from getting buried under a larger background tile during compositing.
  • mask_blend_mode - mask_feather by default, which uses the tile's object mask when available and a feathered rectangular mask otherwise. Reasonable to leave alone unless you have a specific reason not to.
  • color_correction - off by default, and the README's own advice is to start there and only reach for reinhard_lab, mkl_lab, or histogram if you're actually seeing color mismatches between tiles.

Install. ComfyUI Manager, search "Comfyui_TTP_Toolset", or cd ComfyUI/custom_nodes && git clone https://github.com/TTPlanetPig/Comfyui_TTP_Toolset, then restart. No models required by this node itself.

Common issues, straight from the README's own troubleshooting table. Face or eyes getting hidden under a larger tile: turn on small_tile_on_top, keep auto_composite_policy=safe_auto, and make sure TTP Smart Tile Semantic Rank ran upstream so priority metadata actually exists to act on. Original image visibly showing through: set base_canvas_mode=black and confirm you used the editor's "Fill gaps" action so there aren't uncovered regions in the first place. Assembly running slow: stick with assemble_mode=final_only and avoid enabling pixel_alignment for anything other than the true final pass, since repeated alignment on every unfinished loop iteration is the single most expensive thing this node can do.

CategoryTTP/Smart Tile

Inputs (29)

NameTypeDefaultDescription
blend_multiplierFLOAT1.000–4
output_scaleFLOAT0.000–16
use_priorityBOOLEANtrue
tile_alignmentCOMBOcenter_crop4 options: center_crop, crop_or_pad, resize, off
edge_crop_pxINT00–512
color_correctionCOMBOoff5 options: off, local_mean_std, reinhard_lab, mkl_lab, histogram
color_strengthFLOAT0.350–1
mask_blend_modeCOMBOmask_feather4 options: off, auto, mask_only, mask_feather
pixel_alignmentCOMBOoff3 options: off, mask_edge_match, edge_match
pixel_alignment_radiusINT80–64
pixel_alignment_deviceCOMBOauto3 options: auto, cpu, gpu
large_tile_policyCOMBOuse_if_higher_resolution3 options: use_if_higher_resolution, context_only, always_use
large_tile_area_thresholdFLOAT0.550.05–1
min_tile_scale_ratioFLOAT0.950.25–2
context_tile_weightFLOAT0.250–1
assemble_deviceCOMBOauto3 options: auto, cpu, gpu
assemble_modeCOMBOfinal_only2 options: final_only, always
base_canvas_modeCOMBOauto4 options: auto, black, base_image, source_image
weight_preview_modeCOMBOraw_weight2 options: raw_weight, coverage
small_tile_on_topBOOLEANfalse
auto_composite_policyCOMBOsafe_auto5 options: safe_auto, strict_layer, soft_detail, replace_object, replace_tile
replace_tile_shapeCOMBOmask_first2 options: mask_first, tile_box_first
sampled_tilesoptIMAGE
tile_metaoptTTP_SMART_TILE_META
tile_setoptTTP_SMART_TILE_SET
base_imageoptIMAGE
source_imageoptIMAGE
color_reference_imageoptIMAGE
doneoptBOOLEAN

Outputs (2)

NameTypeDescription
imageIMAGE
weight_previewIMAGE