Breaking up tiling
Why tileable materials form visible grids, how to measure the problem, and the full toolbox for hiding it, from authoring choices to shader techniques (random tile offsets, stochastic texturing, macro variation) and hand-placed breakup, with costs and shipped-game examples.
A tileable material repeats, and repetition shows. Step back from a large wall or a field of grass and the eye picks out a grid of identical patches: the same dark stone, the same crack, every two metres. Breaking up tiling (often called anti-tiling) is the set of techniques that hide that grid while keeping the memory savings that made you tile in the first place.
No single technique solves it. Studios combine several: careful authoring, variation in the shader, and breakup placed by hand in the level. This page is the overview; several techniques have their own pages, linked below.
#Why tiling shows
Two things make repetition visible.
- Hot spots. A distinctive feature inside the tile (a dark stone, a bright pebble, a stain) repeats at exactly the same spacing. The eye is very good at finding regular patterns.
- Low-frequency changes. Real surfaces vary over metres: a wall is dirtier near the ground, a lawn is greener in one corner. A tile that is uniform over its whole area cannot show that, so a large surface looks flat and printed.
Inigo Quilez's article on the problem offers shader techniques that hide the repetition at runtime (iquilezles.org: Texture repetition). Unity describes the usual alternatives as larger textures or covering the repetition with extra objects (Unity Blog: Procedural Stochastic Texturing in Unity).
#Worked example: counting visible repeats
A cobblestone material covers 2 × 2 m. The courtyard is 40 × 40 m, so the material repeats 20 × 20 = 400 times.
Now stand 20 m from a wall with a 90° horizontal field of view. The visible width is 2 × 20 × tan(45°) = 40 m, so the screen shows 20 repeats side by side, enough for the eye to pick out a grid.
Hiding the repetition with a larger texture is expensive. Keeping the same texel density of 512 px/m, a 4 × 4 m tile needs a 2048 px texture instead of 1024 px: four times the pixels, so roughly four times the memory, to halve the number of repeats on screen. Quilez's cheapest shader method costs two texture samples instead of one and keeps the 1024 px texture (iquilezles.org: Texture repetition). Every technique below trades shader work against memory in a similar way.
#1. Tile authoring
The cheapest fix is in the texture. See tileable materials for the full workflow; in short:
- Spread features evenly so no single element stands out.
- Keep the tile plain when it will cover large areas, and put distinctive detail into decals and trims you place by hand.
- Make variants that blend. Jared Sobotta's brick generator for The Last of Us Part I tiles at 6×20, so that "my one damaged state brick blends with any of the undamaged variations" (ArtStation: Brick and Concrete Generator). Damaged and clean versions can be mixed freely without seams.
#2. Randomising the tile in the shader
These techniques change which part of the texture each patch of the surface shows.
Random offset and rotation per tile. Quilez's first technique gives each tile a random offset and orientation, then blends near the borders. It costs four texture samples and adds some blur at the borders (iquilezles.org: Texture repetition). Because the offsets jump at tile edges, he warns that "the derivatives will have huge jumps at the tile borders and mipmapping will break apart", and fixes it by computing the gradients from the original UVs (iquilezles.org: Texture repetition).
Smooth Voronoi blending. His second technique blends randomly offset copies around scattered points, which looks more organic but samples the texture nine times, which "might stress the memory bus too much" (iquilezles.org: Texture repetition).
Index-driven variation. The third uses a low-frequency pattern to pick between a few offset versions of the texture, at only two samples plus one cheap lookup (iquilezles.org: Texture repetition).
Stochastic texturing. Unity's research plugin, based on work by Eric Heitz and Fabrice Neyret and by Thomas Deliot and Heitz, generates an effectively endless texture with the input's look, needing "only three texture samples per fragment" plus a small lookup table and two precomputed textures (Unity Blog: Procedural Stochastic Texturing in Unity). It "is only compatible with tileable stochastic and near-stochastic textures": rust, moss, bark, things without precise geometric shapes (Unity Blog: Procedural Stochastic Texturing in Unity). Unity labelled it a research prototype, "not under active development" (Unity Blog: Procedural Stochastic Texturing in Unity).
#3. Variation at a larger scale
These techniques leave the tile alone and change the surface around it.
- Macro variation. A large, low-resolution texture multiplied over the tileable adds the slow changes in colour and roughness that a small tile lacks. The detail maps page covers macro maps and distance blending in depth.
- Second material layers. Ready at Dawn's runtime layering on The Order: 1886 blended up to four material layers using alpha values usually stored in vertex colours, and the authors write: "Typically this functionality is used on environment materials to add unique variation to tiled textures" (Neubelt & Dawn) 2013). See material layers and Substrate.
- World-space masks. Matthew Trevelyan Johns describes Naughty Dog shaders that can use "an objects height within the world, or its orientation" to drive blends (80 Level: Building Environments for Uncharted: The Lost…): moss on top faces, dirt near the ground, stains under ledges.
- Triplanar and world-aligned mapping, which at least keeps the pattern continuous across separate meshes, and lets you rotate or scale projections per layer.
#4. Breakup in the level
The most convincing breakup is placed by hand, because it follows the logic of the place.
- Vertex painting and height blending between a clean and a dirty or damaged material. Sobotta painted the dam walls in Maya with six colour channels for moss, damage, efflorescence and mould (ArtStation: Brick and Concrete Generator).
- Large-scale breakup lines. Sobotta also used large tiling lines "to get some breakup", blended with the damage (ArtStation: Brick and Concrete Generator).
- decals and mesh decals: stains, cracks, leaks and puddles that never repeat.
- Geometry and set dressing and art passes: props, trims, pipes and foliage that interrupt long runs of one surface.
#Comparing the options
| Technique | Extra cost | Best for | Weakness |
|---|---|---|---|
| Better authoring | None at runtime | Every tileable | Limited effect on large areas |
| Random tile offset (Quilez 1) | 4 samples (iquilezles.org) | Noisy natural surfaces | Blur at borders, mip care needed |
| Voronoi blend (Quilez 2) | 9 samples (iquilezles.org) | High-quality organic surfaces | Bandwidth |
| Index variation (Quilez 3) | 2 samples + lookup (iquilezles.org) | Cheap breakup | Needs a well-filtered index pattern |
| Stochastic texturing | 3 samples + lookup (Unity Blog) | Rust, moss, bark | Stochastic textures only |
| Macro and layer variation | 1 or more extra layers | Large walls, terrain | Shader cost per layer |
| Vertex paint, decals, props | Artist time, some draw cost | Anywhere the story matters | Does not scale to whole worlds |
#Further reading and watching
References
- · Texture repetition · iquilezles.org · article · accessed 2026-10-21
- · Procedural Stochastic Texturing in Unity · Unity Blog, 2019 · article · accessed 2026-10-21
- · Brick and Concrete Generator · ArtStation, 2023 · web · accessed 2026-10-21
- · Crafting a Next-Gen Material Pipeline for The Order: 1886 · SIGGRAPH 2013 Physically Based Shading course notes, 2013 · paper · accessed 2026-10-21
- · Building Environments for Uncharted: The Lost Legacy · 80 Level, 2017 · article · accessed 2026-10-21
Also consulted
- · The Material Art of The Last of Us | Substance Days at GDC 2023 | Adobe Substance 3D · YouTube, 2023 · video · accessed 2026-10-21
Pages that link here
- Vertex colours Key term
- Instancing Key term
- Macro normals Key term
- Detail maps and macro variation Topic
- Terrain and landscapes Topic
- Terrain layers and splat maps Key term
- Art fatigue Key term
- Game art breakdowns: a curated library Reference
Last updated 2026-10-22