UDN
Search public documentation:

Landscape
日本語訳
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 Home > Landscape

Landscape


Landscape_Scene.jpg

Landscape is Unreal Engine 3's new terrain system currently in development. It is a heightmap-based system that makes use of Unreal Engine 3's content streaming features to allow for more efficient use of resources, while at the same time providing increased functionality and features over previous terrain system available in the engine. Landscape is intended to replace the old Terrain system, which will be deprecated when Landscape is has reached feature parity.

Landscape Topics

Landscape Features


The main features and techniques employed by the Landscape terrain system are overviewed below.

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 3 previously. Because of its powerful LOD system and the way it makes efficient use of memory, heightmaps up to 8192x8192 are now legitimately possible and feasible. Huge outdoor worlds that allow for any number of types of games to be created quickly, easily, and without modification of the stock engine or tools.

Landscape_Terrain_Size.jpg

Static Render Data Stored as Textures in GPU Memory

The Landscape system stores the render data for the terrain in textures in GPU memory allowing data to be looked up in the vertex shader. The data is packed into a 32-bit texture with the height occupying 16-bits in the form of the R and G channels and X and Y offsets stored as 8-bit values in the B and A channels, respectively.

Continuous Geo-MipMap LOD

LODs for Landscape terrains are handled using standard texture mipmaps. Each mipmap is a level of detail and the mipmap to sample can be specified using the text2Dlod HLSL instruction. This allows for a large number of LODs and also allows for smooth LOD transition as both mip levels 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_LOD_Morph.jpg

Heightmap and Weight Data Streaming

Since the data is being stored in textures, the standard texture streaming system in Unreal Engine 3 can be utilized to stream mipmaps in and out as needed. This not only applies to the heightmap data, but also to the weights for texture layers. Only requiring the mipmaps needed for each LOD minimizes the amount of memory being used at any time, which increases the size of the terrains that can be created since memory is freed up.

High Resolution LOD-Independent Lighting

Since the X and Y slopes of the landscape are being stored, the entire high-resolution (non-LOD'd) normal data is available for lighting calculations.

Landscape_HighRes_Normals.jpg

This makes it possible to always use the highest resolution of the terrain for per-pixel lighting even on distant components that have been LOD'd out.

Landscape_HighRes_Lighting.jpg

When this high-resoluton normal data is combined with detail normal maps, landscape terrains can achieve extremely detailed lighting with very little overhead.

Landscape_Normals_Comparison.jpg

PhysX Collision

Landscape uses a PhysX heightfield object for its collision for both Unreal and rigid-body collision. Physical materials can be specified for each layer, and 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 (e.g. 0.5x render resolution) to save on memory requirements for large landscape terrains. The collision and render components for distant landscape can also be streamed out using the level streaming system.