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.
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).
#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
- Unused layers cost nothing per component in Unreal. "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). Paint each area with only the layers it needs.
- Mobile limits. Unreal's ES3.1 mobile path "still has a hard limit in terms of sampler count (16)", and Epic recommends only three layer nodes on mobile (Unreal Engine Documentation: Landscape Materials). See texture arrays for one way round sampler limits.
- Side projection. Unreal's TCMT XZ mapping is "Recommended for side-projected textures", useful on cliffs where top-down UVs stretch (Unreal Engine Documentation: Landscape Materials). See triplanar and world-aligned mapping.
- Tiling. Each layer's Size controls "how often the Textures tile" (Unity Manual: Terrain Layers); pair it with breaking up tiling and detail maps and macro variation.
#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
- 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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
- Create a Terrain Layer asset per material and set its Size, which controls "how often the Textures tile" (Unity Manual: Terrain Layers).
- 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).
- 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
- Alan Wake II (Remedy Entertainment, 2023). QuadSpinner's interview with lead environment artist Nazareno Urbano says the Cauldron Lake terrain was made entirely in Gaea, then exported with masks and textures and set up in Remedy's Northlight Engine (QuadSpinner Blog: Alan Wake II + Gaea).
- Star Wars Jedi: Survivor (Respawn, 2023). Senior skybox artist Eric Yi Lin used Gaea for a large flat swamp terrain, and its generated masks made layered materials easy to apply in Unreal (QuadSpinner Blog: Artist Spotlight: Eric Yi Lin).
- Hogwarts Legacy (2023). Molly Warner lists terrain painting and sculpting among her world-building tasks for an open-world castle ruin (ArtStation: Hogwarts Legacy - Castle Ruins).
- Far Cry 5 (Ubisoft, 2018). Etienne Carrier's GDC talk presents procedural tools that "generate biomes, texture the terrain, setup freshwater networks" (Game Developer: Video: The world generation tech behind Far…).
- The Witcher 3: Wild Hunt (CD PROJEKT RED, 2015). Marcin Gollent's GDC 2014 talk on REDengine 3 argued for moving "away from the conventional terrain material layers and linear material blends" (GDC 2014: Landscape Creation and Rendering in REDengine…); see the index-map section above.
Related: terrain and landscapes, heightfield erosion, tileable materials, vertex painting and blending.
#Further reading and watching
References
- · Terrain Layers · Unity Manual, 2026 · docs · accessed 2026-10-21
- · Landscape Materials · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Control Map Format · Terrain3D documentation, 2026 · docs · accessed 2026-10-21
- · Landscape Creation and Rendering in REDengine 3 · GDC 2014 (GDC Vault), 2014 · talk · accessed 2026-10-21
- · Texture Blending and Indices (discussion #64) · Terrain3D on GitHub, 2023 · forum · accessed 2026-10-21
- · Intro to Unreal Landscapes - Alpha, Weight and Height Blend Modes · YouTube · video · accessed 2026-10-22
- · Landscape Material Blending With Runtime Virtual Textures - Building Worlds In Unreal - Episode 23 · YouTube · video · accessed 2026-10-22
- · Alan Wake II + Gaea · QuadSpinner Blog, 2024 · article · accessed 2026-10-22
- · Artist Spotlight: Eric Yi Lin · QuadSpinner Blog, 2023 · article · accessed 2026-10-22
- · Hogwarts Legacy - Castle Ruins · ArtStation · web · accessed 2026-10-21
- · Video: The world generation tech behind Far Cry 5 · Game Developer, 2020 · article · accessed 2026-10-21
Pages that link here
- Texture arrays Key term
- Terrain and landscapes Topic
- Blending meshes into terrain Topic
- Heightfield erosion Key term
Last updated 2026-10-22