The 3D Handbook
Key term

Terrain layers and splat maps

How terrain materials such as grass, rock and mud are painted onto a landscape, with weight maps (splat maps) that store how much of each layer covers every point, or index maps that store which layers do.

terraintexturingenvironment-artunrealunitygodot

A terrain layer is one tiling material, such as grass, dirt, rock or snow, that can be painted onto a terrain. A splat map (Unity calls it the control texture, Unreal a weight map) records how much of each layer covers each point. Unity's manual defines the layer as "an Asset that defines a Terrain's surface qualities", reusable across terrain tiles (Unity Manual: Terrain Layers).

Splat maps let you paint a 4 km terrain with a brush while each material still tiles sharply up close.

#How weight blending works

Each layer gets a weight between 0 and 1 at every texel of the map. Unreal's weight blending "Assigns a value between 0 and 1.0 to each layer of the material, which corresponds to a percentage value", and its paint tools make sure weights never add up to more than 1.0 (Unreal Engine Documentation: Landscape Materials). The shader samples every active layer and mixes them by weight.

A texture has four channels (RGBA), so four weights fit in one texture. Unity's limits come in the same groups of four: in URP and the built-in pipeline, four layers per texture pass, with each extra pass adding rendering time; HDRP renders up to eight layers per tile in a single pass, and areas painted with a ninth "appear black" (Unity Manual: Terrain Layers).

Left, two RGBA control textures each fanning out into four colour-coded layers (grass, dirt, rock, snow, sand, moss, gravel, mud). Right, a single 32-bit value per pixel split into fields of 5, 5, 8, 4, 3, 4 and 3 bits, with the base ID, overlay ID and blend fields highlighted.
Weight splat maps store one channel per layer. Index maps store which two layers are present and how to blend them. Memory figures computed for this page.Diagram by the handbook author; bit layout from the Terrain3D documentation

#Index maps instead of weights

Some engines store layer IDs instead of weights. Terrain3D for Godot uses a 32-bit control map per pixel: 5 bits for a base texture ID (0–31), 5 for an overlay ID, 8 for the blend between them, plus UV rotation and scale and flags for holes and navigation (Terrain3D documentation: Control Map Format). Its documentation credits a Witcher 3 presentation for one of its ideas, packing 0–1 values into a 3-bit index (Terrain3D documentation: Control Map Format). CD Projekt RED's GDC 2014 talk on REDengine 3 terrain, by Marcin Gollent, argued that "By moving away from the conventional terrain material layers and linear material blends, visual quality can be improved" (GDC 2014: Landscape Creation and Rendering in REDengine…).

The trade-off shows in a Terrain3D design discussion that compares its blending with a REDengine slide: with index maps, the red and green channels "are both index maps and therefore cannot gradually blend their own indices", which is why blend weights and noise at the edges matter (Terrain3D on GitHub: Texture Blending and Indices).

#Natural-looking blends

A straight weight blend makes grass fade into rock like a crossfade. Height-based blending looks closer to real ground: stones poke through first, grass fills the gaps. Unreal's LB Height Blend is "the same as LB Weight Blend, but also adds detail to the transition between layers based on a height map" (Unreal Engine Documentation: Landscape Materials). See height blending. Unity's terrain layers carry a mask map whose blue channel stores height for the same purpose (R metallic, G ambient occlusion, B height, A smoothness) (Unity Manual: Terrain Layers); see channel packing.

#Performance tips

#How to set one up

The steps below build a four-layer landscape material (grass, dirt, rock, scree) in Unreal Engine 5, then show the Unity equivalent.

Unreal Engine 5

  1. Prepare one tiling material per layer. Each needs base colour, normal and a packed roughness/height texture. Decide the tiling size first; repeating every 2–4 m is a common starting point for ground (example values). See tileable materials.
  2. Create the landscape material. Add a Landscape Layer Blend node and one entry per layer. Use LB Weight Blend for simple fades, or LB Height Blend, which is "the same as LB Weight Blend, but also adds detail to the transition between layers based on a height map" (Unreal Engine Documentation: Landscape Materials). Feed each layer's height texture into its height input. See height blending.
  3. Project cliffs from the side. For the rock layer, use TCMT XZ mapping, "Recommended for side-projected textures", so steep faces do not stretch (Unreal Engine Documentation: Landscape Materials). See triplanar and world-aligned mapping.
  4. Assign it and add the layers to the landscape. Apply the material to the landscape, then in Landscape mode's Paint tools add each layer so it can be painted; weights are kept from adding up to more than 1.0 (Unreal Engine Documentation: Landscape Materials).
  5. Paint big to small. Paint the dominant layer (grass) everywhere, then rock on slopes, dirt along paths, scree at the foot of cliffs. Where a terrain generator exported slope, height or erosion masks, use them as the starting weights instead of painting by hand. See heightfield erosion.
  6. Keep each area's layer count low. "If a Landscape component does not use a specific layer, the subtree of nodes connected to the layer is discarded" (Unreal Engine Documentation: Landscape Materials), so a component painted with three layers is cheaper than one with all four.
  7. Check mobile limits if you target mobile: Epic recommends only three layer nodes there because of the 16-sampler limit (Unreal Engine Documentation: Landscape Materials).

Unity

  1. Create a Terrain Layer asset per material and set its Size, which controls "how often the Textures tile" (Unity Manual: Terrain Layers).
  2. Add a mask map with height in the blue channel (R metallic, G occlusion, B height, A smoothness) for height-based blending (Unity Manual: Terrain Layers).
  3. Paint with the terrain's Paint Texture tool. In URP and the built-in pipeline, every group of four layers adds a rendering pass; HDRP draws up to eight layers per tile (Unity Manual: Terrain Layers).

#Video tutorials

#Use in recent games

Jared Sobotta tints the terrain geometry blue. Only that part receives the painted terrain layers; the rocks and embankment meshes around it carry their own materials and are blended to match.Jared Sobotta, via ArtStation
Look at the transitions between mud, moss and rock: they follow the shape of the ground (slopes, hollows, erosion lines) rather than painted blobs.Jared Sobotta, via ArtStation

Related: terrain and landscapes, heightfield erosion, tileable materials, vertex painting and blending.

#Further reading and watching

References

  1. Unity Technologies · Terrain Layers · Unity Manual, 2026 · docs · accessed 2026-10-21
  2. Epic Games · Landscape Materials · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
  3. Terrain3D contributors (Tokisan Games) · Control Map Format · Terrain3D documentation, 2026 · docs · accessed 2026-10-21
  4. Marcin Gollent (CD Projekt RED) · Landscape Creation and Rendering in REDengine 3 · GDC 2014 (GDC Vault), 2014 · talk · accessed 2026-10-21
  5. outobugi and TokisanGames · Texture Blending and Indices (discussion #64) · Terrain3D on GitHub, 2023 · forum · accessed 2026-10-21
  6. tharlevfx · Intro to Unreal Landscapes - Alpha, Weight and Height Blend Modes · YouTube · video · accessed 2026-10-22
  7. Ben Cloward · Landscape Material Blending With Runtime Virtual Textures - Building Worlds In Unreal - Episode 23 · YouTube · video · accessed 2026-10-22
  8. QuadSpinner Team · Alan Wake II + Gaea · QuadSpinner Blog, 2024 · article · accessed 2026-10-22
  9. Cynthia Najim (QuadSpinner) · Artist Spotlight: Eric Yi Lin · QuadSpinner Blog, 2023 · article · accessed 2026-10-22
  10. Molly Warner · Hogwarts Legacy - Castle Ruins · ArtStation · web · accessed 2026-10-21
  11. Game Developer (talk by Etienne Carrier, Ubisoft) · Video: The world generation tech behind Far Cry 5 · Game Developer, 2020 · article · accessed 2026-10-21

Last updated 2026-10-22