When developing games or simulations with Unreal Engine (UE), everyone eventually hits the wall of frame rate drops. Particularly when creating vast open worlds or scenes with intricate details, rendering load increases regardless of PC specs, often compromising smooth experiences.
Are you currently facing challenges like these?
- The game gets heavier as the number of objects in the scene increases.
- Frame rate suddenly drops in specific locations.
- You're told "rendering load is high" but don't know where to start.
Many of these problems are caused by rendering things that don't need to be rendered. This article thoroughly explains three essential rendering performance improvement tools in Unreal Engine—LOD (Level of Detail), Culling, and Occlusion Culling—from basic principles to practical setup methods for beginners to intermediate developers.
LOD (Level of Detail)
LOD is a technique that automatically switches mesh polygon counts and material complexity based on distance from the camera. Objects far away are nearly indistinguishable to users even with fewer polygons. Leveraging this characteristic significantly reduces rendering load.
LOD Basics and Setup
In Unreal Engine, you can easily set up LOD within the Static Mesh Editor.
- Auto-Generate LOD: Open the Static Mesh Editor and select an "LOD Group" in the "LOD Settings" section, or click the "Generate LODs" button. UE automatically generates LOD meshes with reduced polygon counts from the original mesh.
- Verify LOD: Select "LOD Coloration" from "View Mode" in the viewport to visually confirm which LOD is being rendered by color.
| LOD Level | Distance (Screen Size Ratio) | Polygon Reduction Rate (Approximate) |
|---|---|---|
| LOD 0 | 100% | 0% (Original) |
| LOD 1 | 50% | 50% |
| LOD 2 | 25% | 75% |
| LOD 3 | 12.5% | 90% |
Best Practice: Adjusting LOD Switch Distance
The LOD switch distance (Screen Size) is crucial for balancing performance and visual quality.
- High-Priority Assets: For objects frequently viewed up close like protagonists and important items, set shorter LOD switch distances (maintain LOD 0 longer) prioritizing quality.
- Background Assets: For background objects placed in large quantities like rocks and trees, set longer LOD switch distances (switch to LOD 1+ sooner) prioritizing performance.
💡 About UE5's Nanite
Nanite introduced in UE5 fundamentally transforms traditional LOD systems. With Nanite enabled on static meshes, LOD auto-generation and switch settings become unnecessary, and the engine automatically renders optimal detail at the pixel level. However, Nanite cannot be applied to skeletal meshes (characters) or meshes using translucent materials, so traditional LOD setup explained in this article is still necessary for these assets.
Culling
Culling is the general term for processes that exclude objects that don't need to be rendered from the rendering pipeline. There are mainly two important types.
Frustum Culling
This is the most basic culling, which removes objects outside the camera's view (view frustum) from the rendering list. UE handles this automatically, so developers rarely need to consciously configure it, but it's a fundamental performance feature.
Distance Culling
This feature prevents rendering of objects beyond a certain distance from the camera. It's particularly effective in vast scenes.
- Setup Method:
- Set "Desired Max Draw Distance" in the "Rendering" section of the Static Mesh Component. Beyond this distance, that mesh won't be rendered.
- For more flexible control, use Cull Distance Volume. This allows batch application of distance-based culling settings to objects within the volume.
Common Mistake: Excessive Culling Distance Settings
Setting culling distance too short causes objects to suddenly pop up (appear), breaking game immersion. Appropriate distances should be determined through repeated testing based on game scale and object importance.
Occlusion Culling
Occlusion culling prevents rendering of objects completely hidden by other objects (occluders) that don't appear on screen. This eliminates rendering load for large numbers of objects behind walls or inside buildings.
Occlusion Culling Mechanics and Setup
UE provides different occlusion methods depending on platform and version.
💡 Hardware vs Software Occlusion
For PC/console UE5, GPU-based hardware occlusion (HZB: Hierarchical Z-Buffer) is enabled by default, and occlusion culling is performed automatically without special setup. On the other hand, software occlusion culling is mainly for mobile or low-spec environments, and is used selectively based on platform and project settings.
- Verify Project Settings: Confirm that "Occlusion Culling" is enabled in the "Rendering" section of "Project Settings" (enabled by default).
- Occluder Setup (Mobile): When using mobile software occlusion, specify the LOD used for occlusion calculations in the "LOD for Occluder Mesh" setting of static meshes that will act as occluders (blocking objects).
Practical Application: Occluder Optimization
Occlusion culling calculations themselves have costs. Rather than setting all meshes as occluders, optimize with these considerations:
- Only Make Large Blockers Occluders: Small objects don't provide benefits worth the calculation cost as occluders. Limit to meshes that can block wide areas like entire buildings, large walls, and ground.
- Occluder LOD: Setting occluder meshes to use LOD meshes with reduced polygon counts for occlusion calculations further reduces calculation load.
Debug Command Verification
These debug commands help verify occlusion culling is working correctly:
# Display occlusion culling statistics
stat occlusion
# Display rendered object count and culled object count
stat initviews
Key Points for Rendering Optimization
Improving Unreal Engine rendering performance starts with balanced use of three technologies: LOD, Culling, and Occlusion.
| Technology | Purpose | Practical Action |
|---|---|---|
| LOD | Reduce rendering load for distant objects | Auto-generate LOD in Static Mesh Editor and adjust switch distances. (Automated for Nanite-enabled assets) |
| Culling | Stop rendering objects outside view or far away | Set Desired Max Draw Distance or use Cull Distance Volume. |
| Occlusion Culling | Stop rendering hidden objects | HZB is enabled by default in UE5. For mobile, set up occluder meshes. |
By mastering these technologies and regularly checking rendering load with stat commands, your project will provide smoother, more comfortable experiences for users. We recommend starting with LOD setup for the assets with the highest polygon counts in your scene.