Landscape
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.
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.
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.
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.
When this high-resoluton normal data is combined with detail normal maps, landscape terrains can achieve extremely detailed lighting with very little overhead.
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.
Important!
You are viewing documentation for the Unreal Development Kit (UDK).
If you are looking for the Unreal Engine 4 documentation, please visit the Unreal Engine 4 Documentation site.