Seamless Tiling Maker
Killing the visible seam before it reaches your material
- image
- image
- edge_mask
A texture only becomes a material when it tiles. The moment you repeat a photo across a floor, the hard edge where left meets right screams "AI scan." Seamless Tiling Maker is the pack's answer: it rewrites the edges so the texture wraps around without a visible boundary, and it hands you an edge_mask for the one case where the math alone isn't enough.
How it works
You pick a method, and each is a genuinely different trick:
mirror- flips the image left-right, top-bottom, and both, then averages all four. It's the fastest and it's shockingly good for organic textures like rock and bark, because mirroring a pattern reads as the same pattern.blend_edges(default, and the one the author calls "best") - cross-fades the top edge into the bottom and the left into the right over a region controlled byblend_width(a fraction of the image, 0–0.5). Smoother than mirror, and the right default.offset- rolls the image by half in both directions withtorch.roll, which moves the seam to the exact middle as a cross. This one is a preparation step: it exposes the worst seam dead-center where you can inpaint it away.
blend_width doubles as the feather width for the edge mask, so it controls both how far the blend extends and how soft the mask is.
The edge_mask is the real feature
This is the part most tiling nodes skip. The edge_mask output is white at the seams and black in the center. In offset mode it marks that center cross precisely. That's a ready-made inpaint mask: you run the texture through a masked inpaint, feed the mask here, and let the model sew the seam properly - the mask-guided cleanup that classic inpainting still owns. Masked inpainting hasn't gone anywhere even in the age of instruction editors; what it still uniquely gives you is leaving the rest of the pixels untouched, and that's exactly what seam repair wants.
The two inputs that matter
method and blend_width, that's it. image in, image + edge_mask out. About as minimal as a texture node gets.
Installing it
In the amtarr/ComfyUI-TextureAlchemy pack. ComfyUI Manager → search "Texture Alchemy", or:
cd ComfyUI/custom_nodes
git clone https://github.com/amtarr/ComfyUI-TextureAlchemy
Restart, then right-click → Add Node → Texture Alchemist → Texture. No extra dependencies, no model files.
Where people get burned
blend_edges and mirror fix discontinuities, not lighting gradients. If your source photo has a shadow falling across it, you'll still see a brightness step repeat no matter how you blend the edges - that's a job for the pack's Texture Equalizer first. And if the texture has a strong directional element like wood grain, mirroring can create a telltale "butterfly" pattern; switch to offset plus inpainting instead. The pack prints a console banner on every run, which is normal. Don't crank blend_width past ~0.25 for photography - wide blends turn the center of your texture into mush.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| method | COMBO | blend_edges | Tiling method: mirror (fastest), blend_edges (best), offset (simple) |
| blend_width | FLOAT | 0.100–0.5 | Edge blend width (0-0.5, fraction of image) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| edge_mask | IMAGE | — |