Skip to content

Hex Tile

Node icon
Transform

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 Tile

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.

  • 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.

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.

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).

Hex Tile

Output ScaleNumber
Default: 1.00 Range: 1.00–8.00

Output canvas size as a multiple of the input tile. The texture is not stretched; a larger canvas is covered with more hex cells

Seamless OutputToggle
Default: true

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 Size (%)Number
Default: 50 Range: 10–100

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

Blend SharpnessNumber
Default: 8.0 Range: 1.0–64.0

How strongly each cell dominates near its center.

  • Low: soft, ghosty transitions.
  • High: hard cell edges.
InterpolationChoice
Default: Bilinear

Resampling filter

  • NearestNo interpolation, so hard pixel edges are preserved. Best for pixel art.
  • BilinearSmooth blending between pixels, with good general-purpose quality.
  • LanczosHighest quality with sharp detail preservation, best for final output.

Jitter

Rotation Jitter (°)Number
Default: 180 Range: 0–180

Each cell rotates its content by a random angle in this symmetric range. 0 disables rotation.

Rotation StepsChoice
Default: Free

Quantize cell rotation to fixed steps. Helps semi-structured textures where free rotation reads as wrong

  • FreeCells rotate to any random angle within the Rotation Jitter range. Best for organic material like rock, dirt, or grass.
  • 60°Quantize cell rotation to multiples of 60°, matching hex symmetry. Keeps semi-structured textures from reading as wrong.
  • 90°Quantize cell rotation to right angles, for brickwork, planks, or anything on a square grid.
  • 180°Cells only ever flip 180°, preserving strong horizontal or vertical direction while still breaking repetition.
Scale Jitter (%)Number
Default: 20 Range: 0–50

Each cell scales its content by a random factor around 100%

Offset Jitter (%)Number
Default: 100 Range: 0–100

Each cell samples the source at a random offset. 0 keeps texel alignment (rotation and scale only)

Normal Map

Normal MapToggle
Default: false

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 ChannelChoice
Default: OpenGL (Y+ up)
Normal Map = on

Green-channel orientation of the normal map

  • OpenGL (Y+ up)Green channel points up. Matches the Normal Map node's output and most OpenGL-style maps.
  • DirectX (Y+ down)Green channel points down. Matches Unity/Unreal-style maps.

Display

Show GridToggle
Default: true

Overlay the hex lattice and per-cell rotation ticks in the preview while the node is selected. Display-only; never affects the output

Randomization

SeedInteger
Default: 42 Range: -1–999999

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.

  • 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.