Landscape Overview

An overview of the Landscape Outdoor Terrain System and how to use it in your projects.

Using the Landscape system, you can create terrain for your world. Mountains, valleys, uneven or sloped ground, and even openings for caves are possible. Using the collection of tools in the Landscape system, you can modify your terrain's shape and appearance.

For information about opening and using the Landscape tool, refer to the Landscape Quick Start Guide.

Landscape Tool Modes

Landscape Tool Modes

The Landscape tool has three modes, accessible by their icons at the top of the Landscape tool's window.

Icon

Mode

Description

Manage mode

Manage mode

Create new Landscapes, and modify Landscape components. Manage mode is also where you work with Landscape Copy Tool to copy, paste, import, and export parts of your Landscape. For more information about Manage mode, refer to Landscape Manage Mode.

Sculpt mode

Sculpt mode

Modify the shape of your Landscape by selecting and using specific tools. For more information about Sculpt mode, refer to Landscape Sculpt Mode.

Paint mode

Paint mode

Modify the appearance of parts of your Landscape by painting textures on it, based on the layers defined in the Landscape's Material. For more information about Paint mode, refer to Landscape Paint Mode.

Creating a Landscape means creating a Landscape Actor. As with other Actors, you can edit many of its properties, including its assigned Material, in the Level Editor's Details panel. For more information about Details panels, refer to Level Editor Details Panel.

Landscape Features

Below are the main features and techniques employed by the Landscape terrain system.

Large Terrain Sizes

The Landscape system paves the way for terrains that are orders of magnitude larger than what has been possible in Unreal Engine previously. Because of its powerful Level of Detail (LOD) system and the way it makes efficient use of memory, heightmaps up to 8192x8192 are now legitimately possible and feasible. Unreal Engine now supports expansive outdoor worlds, which means quick game creation without modifiying stock engine or tools.

Click image to expand.

Landscape Memory Usage

Landscapes are generally a better choice for creating large terrains than Static Meshes.

Landscapes use 4 bytes per vertex for the vertex data. Static Meshes store position as a 12-byte vector, and tangent X and Z vectors packed into 4 bytes each, and either 16-bit or 32-bit float UVs for a total of either 24 or 28 bytes per vertex.

This means Static Meshes use 6 or 7 times the memory Landscapes use for the same vertex density. Landscapes also store their data as Textures and can stream out unused LOD levels for distant areas and load them from disk in the background as you approach them. Landscapes use a regular heightfield that efficiently stores collision data compared to the collision data for Static Meshes.

Static Render Data Stored as Textures in GPU Memory

On most platforms, the Landscape system stores the render data for the terrain in Textures in GPU memory. This storage can be used for data look-up in the vertex shader. The render data uses a 32-bit Texture for storage, with the height occupying 16-bits in the form of the R and G channels and the normal stored as 28-bit values for X and Y, occupying the B and A channels, respectively. Additionally, if the Retopologize tool is being used, another 32-bit Texture will store the X and Y offsets.

Continuous Geo-MipMap LOD

Standard Texture mipmaps handle LODs for Landscape terrains. Each mipmap is a level of detail, and the mipmap to sample can be specified using the text2Dlod HLSL instruction. Your Landscape can have a large number of LODs, yet maintain smooth LOD transitions, because mip levels for both LODs involved in a transition can be sampled, and then the heights and X and Y offsets can be interpolated in the vertex shader creating a clean morphing effect.

Landscape LOD1

Landscape LOD1 to LOD2

Landscape LOD2

Fully LOD 1

Morphing from LOD 1 to LOD 2

Fully LOD 2

Heightmap and Weight Data Streaming

With Textures storing data, the standard Texture streaming system in Unreal Engine handles streaming mipmaps in and out as needed. This applies to the heightmap data and the weights for Texture layers. Only requiring the mipmaps needed for each LOD minimizes the amount of memory used at any time, which means you can create a more extensive terrain.

High Resolution LOD-Independent Lighting

The entire high-resolution (non-LOD'd) normal data is available for lighting calculations due to the storage of the X and Y slopes of the Landscape.

Landscape LODs

Landscape Full Resolution Normals

Landscape LODs

Full Resolution Normals

This means you can always use the highest resolution of the terrain for per-pixel lighting, even on distant components that have been LOD'd out.

Landscape Simple Vertex Lighting

Landscape High Res Per-Pixel

Simple Vertex Lighting

High Res Per-Pixel Lighting

When this high-resolution normal data combines with detailed normal maps, Landscape terrains can achieve highly detailed lighting with very little overhead.

Landscape Geometry Normals

Landscape Detail Normals

Geometry Normals Only

With Detail Normals

Collision

Landscape uses a heightfield object for its collision. Layers can specify a Physical Materials. The collision system will use the dominant layer at each position to determine which Physical Material to use. It is possible to use a reduced resolution collision heightfield (for example, 0.5x render resolution) to save on memory requirements for large Landscape terrains. The collision and render components for distant Landscapes can also be streamed out using the level streaming system.