Hex Tile
Hide the visible repetition when a texture tiles across a large surface.
Hex Tile covers the image with a grid of hexagonal cells. Each cell shows the source at its own random rotation, scale, and offset, and neighboring cells blend smoothly into one another. The eye can no longer find the repeating pattern, but the material still reads as the same material. It is the complement of Seamless Blend: Seamless Blend makes a non-tileable image tileable, Hex Tile makes a tileable image non-repeating.
The input should itself be seamless, because Hex Tile’s cells sample across the tile border. A seam in the input shows up inside the cells of the output, so the recommended chain for a photo or painted source is:
Image In -> Seamless Blend -> Hex TileSeamless Output
Section titled “Seamless Output”Seamless Output (on by default) makes the node’s own result a perfect tile: the hex lattice snaps so a whole number of periods fits the canvas, and the cell randomization repeats with it, so opposite edges match exactly. Combined with Output Scale, this is the node’s primary workflow: feed in a small seamless tile, set Output Scale to 2-8x, and get a large texture that still tiles cleanly but never reads as repeating.
The snap squashes the hexes very slightly (most at low cell counts, vanishing as the count grows). If you need perfectly regular hexes and don’t need the output to tile, turn Seamless Output off.
The main controls
Section titled “The main controls”- Hex Size sets each cell’s width as a percentage of the source tile’s smaller dimension; at 100% one cell spans the whole tile. Larger cells preserve big features; smaller cells scramble harder but ghost more at soft sharpness.
- Blend Sharpness sets how strongly each cell dominates near its center. Low values give soft, ghosty transitions (useful for seeing what the node does); the default 8 is a good working value; 64 is effectively hard cell edges.
- Rotation / Scale / Offset Jitter control how much each cell’s content is randomized. With everything at 0 (and Seamless Output off) the node reproduces its input exactly.
- Seed drives all the per-cell randomization. Use the same seed on every copy across a texture set to keep all maps pixel-aligned.
Structured textures
Section titled “Structured textures”Free rotation reads as wrong on brickwork, planks, text, or anything with a strong direction. Three tools tame it:
- Rotation Steps quantizes cell rotation to 60, 90, or 180 degrees.
- Rotation Jitter at 0 disables rotation entirely.
- Offset Jitter at 0 keeps texel alignment, so cells vary only by rotation and scale.
The sweet spot for full randomization is organic material: rock, dirt, moss, bark, grass, sand.
Texture sets
Section titled “Texture sets”Cell placement depends only on the tile’s proportions and the Seed, never on resolution or content, so every map processed with the same settings and Seed comes out pixel-aligned with the others. The simplest way to process a whole set is as a batch: gather the maps with Collect (or load them with Image Folder) and run the batch through one Hex Tile node.
The one map that must not ride along with the color maps is the normal map. Rotating a normal map’s pixels is not enough; the normal vectors packed in its colors must rotate with the content, or lighting breaks at every cell edge. Route it through its own Hex Tile copy (same settings and Seed) with the Normal Map option enabled: it decodes the normals, rotates them with each cell, and re-blends them correctly. The Green Channel control matches Relight’s convention choice (OpenGL Y+ up, the default and what ArcBrush’s Normal Map node produces, or DirectX Y+ down).
Parameters
Section titled “Parameters”Hex Tile
Output canvas size as a multiple of the input tile. The texture is not stretched; a larger canvas is covered with more hex cells
Snaps the hex lattice and wraps cell randomization so the output is itself a perfect tile. Hexes squash slightly to fit whole lattice periods; turn off for exactly regular hexes and a non-tiling result
Hex cell width as a percentage of the source tile's smaller dimension; at 100% one cell spans the whole tile. Larger cells preserve big features; smaller cells scramble harder
How strongly each cell dominates near its center.
- Low: soft, ghosty transitions.
- High: hard cell edges.
Resampling filter
Jitter
Each cell rotates its content by a random angle in this symmetric range. 0 disables rotation.
Quantize cell rotation to fixed steps. Helps semi-structured textures where free rotation reads as wrong
Each cell scales its content by a random factor around 100%
Each cell samples the source at a random offset. 0 keeps texel alignment (rotation and scale only)
Normal Map
Treat the input as a tangent-space normal map: rotate the normal vectors with each cell's content and renormalize the blend, so lighting stays continuous across cells. Enable this only on the copy processing the normal map
Green-channel orientation of the normal map
Display
Overlay the hex lattice and per-cell rotation ticks in the preview while the node is selected. Display-only; never affects the output
Randomization
Seed for the per-cell rotation, scale, and offset. Use the same seed on every copy of this node across a texture set so all maps stay pixel-aligned
With Show Grid on, selecting the node draws the hex lattice over the preview, with a tick in each cell showing its rotation. The overlay is display-only and never affects the output.
Usage Tips
Section titled “Usage Tips”- Feed a seamless input: run Seamless Blend first, since any seam in the source appears inside the output cells.
- Set Output Scale to 2-8x with Seamless Output on to synthesize a large non-repeating texture from a small tile.
- For brick, planks, or text, use Rotation Steps or drop Rotation Jitter to 0 so the structure survives.
- Across a texture set, keep the same Seed on every map so all channels stay pixel-aligned, and enable Normal Map on the copy carrying the normal map.