Seamless Texture Radial Mask
The one you'll actually reach for — offset-and-blend that keeps the center
- image
- texture
This is the pack's flagship, and it earns it. The README is unambiguous: the radial mask mode is the one recommended for game assets, and it's an offline, open-source take on the technique behind the popular imgonline make-seamless-texture web tool. If you only remember one node from this pack, make it this one.
The idea is offset-and-blend, but done with a radial mask so the center of your image survives intact. The image is rolled by half - the continuous center content wraps to the edges, making them match - and then the original (center) is blended with the rolled copy (edges) across an elliptical zone. What you keep is the middle of your texture exactly as it was; what gets replaced is only the outer ring that would otherwise form the visible seam.
How it works
Two things set it apart from the Half Shift sibling. First, the blend zone is elliptical (a radial distance from the center) rather than a rounded square, so corner handling is more natural. Second - and this is the differentiator - scatter_strength adds wavy variation to the blend boundary using a stack of sine harmonics (angle × 5, 11, and 17, weighted 0.08/0.05/0.03). The boundary wobbles organically instead of reading as a perfect circle, which is the difference between "blended" and "there's a visible donut where I blended."
The inputs that matter
- inner_radius (default 0.85) - where blending starts. Higher preserves more of the original center. This is the main lever for keeping your texture's core intact.
- outer_radius (default 1.0) - where blending finishes. Values above 1 push the blend into the corners.
- scatter_strength (default 1.0) - organic wobble on the boundary. 0 gives a smooth ellipse; 2 is heavily scattered. If you ever see a circular ring in the output, this is the knob to touch.
- blend_curve (default
cubic) - the easing across the transition.smootherstepis the gentlest.
Output is a single IMAGE (texture). The README's own recipe: generate a texture with a modern model (Flux Klein 4b or Z-Image Turbo) using a circular VAE decode from spinagon's ComfyUI-seamless-tiling, push it through the Pre-Processor to flatten lighting, then through this node, then verify with the Tiled Preview.
Installation
No models, no extra pip dependencies - pure torch:
cd ComfyUI/custom_nodes
git clone https://github.com/SparknightLLC/ComfyUI-MakeSeamlessTexture
or install "ComfyUI-MakeSeamlessTexture" via ComfyUI Manager, then restart.
Common issues
- A visible circle or ring in the output. The blend boundary is showing. Bump
scatter_strengthto break up the edge, or widen the blend zone by loweringinner_radius/ raisingouter_radius. - Doubled or ghosted features. Anything strong crossing the blend ring gets softly duplicated because the shifted copy also contains it. Raise
inner_radiusto pull the ring closer to the edge. - Keep
inner_radiusbelowouter_radius. If you invert them, the blend logic degenerates and you get an almost fully rolled image - seamless, but the center preservation you wanted is gone. - It can't invent missing content. Like every node in this pack, it rearranges what's there. Strong gradients or a distinct subject at the edges still benefit from a Pre-Processor pass (or a better source) first.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Image to make seamless using the radial mask method. | |
| inner_radius | FLOAT | 0.850–1.5 | Normalized radius where blending starts. 0 = center, 1 = edge. Higher values preserve more of the original center. |
| outer_radius | FLOAT | 1.000.1–2 | Normalized radius where blending ends. Values > 1 extend blending into corners. |
| scatter_strength | FLOAT | 1.000–2 | Amount of wavy variation in blend boundary. 0 = smooth ellipse, higher = more organic/scattered. |
| blend_curve | COMBO | cubic | Blend curve for the transition from center to edges. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| texture | IMAGE | — |