Hierarchical Level-Of-Detail
The Hierarchical Level-Of-Detail (HLOD) system's purpose in Unreal Engine is to improve performance in terms of draw calls, memory usage, reduced geometric- and material complexity on faraway Actors. These generated Hierarchical LODs will switch in / out based on a metric (such as loading range, OnScreenSize) to replace one or more source Actors residing in that specific cluster / part of the world. For more details, see Unreal Engine's documentation on World Composition or World Partition depending on what world type is currently set in the level.
Below is a list of the most common built-in HLOD types that implement Unreal Engine's standard reduction interfaces. These HLOD types are selectable in a HLOD Layer.
- Instancing
- Mesh merging
- Simplification
- Approximation
Simplygon provides an optimization module for simplification (through the Remeshing pipeline). This module inherits Unreal Engine's standard reduction interface and will therefore have limited UI capabilities. See the Set default reduction module documentation for more details on how to change the default reduction module(s).
World Partition + HLOD
When the world type is World Partition the user has to setup HLOD Layers to be able to specify the type of the optimization for that specific level. HLOD Layers can also be parented; parented layers can be seen as a sequential LOD chain where each LOD can switch at its own distance. Common HLOD types for a LOD chain can be instancing-, mesh merging, simplification and approximation.
Setup steps for worlds that are using World Partition:
- Create one or more HLOD Layer(s).
(for a sequential LOD chain the layers must be parented). - Set the Layer Type to the preferred type: Instancing, Merged Mesh, Simplified Mesh, or Approximated Mesh. To enable Simplygon for HLOD generation; make sure that the Layer Type is set to "Simplified Mesh", and that the default reduction modules are set to "Simplygon".
- Specify the settings for the selected Layer Type.
- Build the HLODs through Build → Build HLODs inside the editor, or through the commandlet (see the Unreal Engine documentation for more details).
Standard World and World Composition + HLOD
Setup steps for worlds that are using standard (non-partitioned) world type or World Composition:
- Setup HLOD levels in World Settings → HLOD System.
- Use the HLOD outliner to generate HLOD clusters and to build / re-build HLODs.
- To use Simplygon for HLOD generation; make sure that the default reduction modules are set to "Simplygon", and that the HLOD setting "Simplify Mesh" is enabled in the HLOD System settings.
- See Unreal Engine's HLOD outliner reference and tutorial.
Setup HLOD Levels
The setup of HLOD levels has moved from the HLOD outliner to World Settings → HLOD System since UE4.
See the description of HLOD System setting below:
No | Color | Description |
---|---|---|
1 | —— | HLOD System settings widget. |
2 | —— | Level settings widget. |
3 | —— | Cluster generation settings widget. |
4 | —— | Mesh generation settings widget. |
HLOD System settings widget
This section contains settings such as "Override Base Material" and "HLOD Baking Transform".
Level settings widget
An HLOD can have multiple levels, where each level has its own cluster generation settings and mesh generation settings. The HLOD level settings (previously under Hierarchical LOD Setup) have been moved to World Settings → HLOD System (see Setup HLOD levels).
Cluster generation settings widget
The cluster generation settings are used when the cluster generation gets triggered from the HLOD outliner. These settings decides how the cluster generation is done.
Mesh generation settings widget
Mesh generation settings specify what kind of mesh optimization is to be done during mesh generation. For example if a cluster should include instances of the original Actors, a merge of all Actors, or a simplification which generates a new simplified mesh that combines all source Actors into one. To use Simplygon's proxy / remeshing generation for this HLOD level, select Simplify. The Transition Screen Size setting specifies the OnScreenSize at which the switch will occur.
The HLOD outliner
The purpose of the HLOD outliner is to generate HLOD clusters, build and re-build HLODs. If the HLOD outliner is greyed out in Windows → HLOD Outliner it is most likely because the current world type does not support it (for example if the world type is set to World Partition).
Below is a description of the HLOD outliner and its parts.
No | Color | Description |
---|---|---|
1 | —— | Button toolbar |
2 | —— | Outliner widget |
3 | —— | Settings widget |
4 | —— | Status bar |
Button toolbar
The HLOD Outliner toolbar contains four elements:
UI Element | Description |
---|---|
Regenerate Clusters | Regenerates HLOD clusters based on the cluster generation settings for each level in World Settings → HLOD System. |
Generate Proxy Meshes | Generates a Proxy mesh for each cluster in the level. |
Build All | Regenerates all clusters and Proxy meshes in the level. |
Save | Saves all external HLOD data. |
Outliner widget
The outliner displays all LOD levels and clusters, including original Actors, their name, original triangle count, reduced triangle count and which level they belong to.
Settings widget
There are some settings left in this view in UE5, most of the HLOD settings have moved to World Settings → HLOD System. See Setup HLOD levels for a description of all the HLOD settings.
Status bar
The status bar provides the user with information regarding the state of the HLODs.
When to use HLOD?
The HLOD system is designed to solve specific problems, below are some key points / suggestions of when to consider having it enabled.
- Ideal for large open worlds.
- When the world has Actors with high geometric complexity that results in excessive overdraw.
- When the world can display many Actors on the screen that results in draw-call bound situations.
- When LOD switching mechanics are required.
Quality vs performance
Depending on the type of game and target platform there might be different problems to solve; one can be low rendering performance while another can be high memory usage. Generated HLODs (geometry and baked textures) will affect memory usage; in terms of in-game memory usage, VRAM usage and disk space. Settings might need to be tweaked to find the best balance for the specific target platform(s).
Quality improvements
Aggressive LOD switching can result in LOD pops, below are two techniques that can reduce the effect:
- Screen-door fading: a screen space technique where a dither pattern is used to blend between LODs when switching.
- Geomorphing: a technique that requires an extra set of UV coordinate to blend between the vertices of LODs.
To improve generation of HLOD clusters for Standard World and World Composition, use HLOD volumes. For "building-like" assets, enable "Only Generate Clusters for Volumes".
If there is a Landscape Actor in the level, consider enabling landscape culling to clip away back-facing triangles. This also results in better usage of texture space for baked materials.