Nodes/MKRShift_Nodes/Texture Tile Preview
ComfyUI Node

Texture Tile Preview

See the seams before they embarrass you — a tiling preview node

By criskb·Created 7 months ago·Updated 5 months ago· 0
Texture Tile Preview
  • image
  • image
  • mask
  • tile_preview_info
settings_json{"tiles_x":3,"tiles_y":3,"show_seams":true,"seam_width":2.0,"seam_opacity":0.65,"seam_softness":1.0}

There's a very specific feeling of dread when you tile a texture in-engine and discover the seam you never saw in the flat preview. Texture Tile Preview exists to kill that moment: it tiles your image into a grid of repeats and draws the seam lines on top, so you can actually see where the tiles will meet - and where they'll betray you - before you commit. It's a preview node, not a fixer; pair it with the pack's Offset and Seamless nodes to close the loop.

How it works

The mechanism is refreshingly simple: tiles_x and tiles_y control how many repeats you get (default 3×3, the classic "three copies is enough to see the pattern" diagnostic), and the node tiles your source image with np.tile. Then, if show_seams is on, it draws the tile boundaries as a grid overlay - bright orange seams at seam_opacity, feathered by seam_softness. The result is a single image you can feed straight into a preview node or save.

The reason 3×3 matters: with a single tile you can't tell a repeating pattern from a unique image. With nine copies, your eye locks onto the repetition, and any place where the pattern doesn't continue across the boundary glows like a neon sign. That's the entire value of the node, and it's a big one.

The inputs that matter

Inputs: an image plus one settings_json text box (pack convention - JSON, not sliders). The knobs:

  • tiles_x / tiles_y - repeat count (3/3 default; 1×1 = just the source)
  • show_seams - toggle the seam overlay
  • seam_width / seam_opacity / seam_softness - how visible the boundary markers are

Outputs: image (the tiled preview, overlay included), mask (the seam grid as a mask), and tile_preview_info with resolved settings.

Installing it

Ships in MKRShift Nodes from criskb. ComfyUI Manager → "MKRShift Nodes", or:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

Restart ComfyUI; it's under MKRShift Nodes → Surface → Texture. No models or extra deps.

Common gotchas

The pack is new with no community lore yet - the code is your best reference. Standard MKRShift traps: broken settings_json silently falls back to defaults, out-of-range values clamp. Two workflow notes from how it's built: the seam overlay is drawn at full seam_opacity regardless of the underlying image, so if you want a clean look at just the tiling (no markers), set show_seams to false - but then you lose the "where is the seam" guidance, so the defaults are a fair trade. And remember this is a diagnostic: if the preview shows a seam, the fix belongs in the texture (try the Seamless node, or regenerate tileable), not in here.

CategoryMKRShift Nodes/Surface/Texture

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
settings_jsonSTRING{"tiles_x":3,"tiles_y":3,"show_seams":true,"seam_width":2.0,"seam_opacity":0.65,"seam_softness":1.0}

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
tile_preview_infoSTRING