Lumen is Unreal Engine 5's fully dynamic global illumination and reflections system that is designed for next-generation consoles, and it is the default global illumination and reflections system. Lumen renders diffuse interreflection with infinite bounces and indirect specular reflections in large, detailed environments at scales ranging from millimeters to kilometers.
Getting Started with Lumen
Newly-created projects have Lumen Global Illumination and Reflections enabled by default, as well as their dependencies like Generate Mesh Distance Fields.
Existing projects converted from Unreal Engine 4 to Unreal Engine 5 will not automatically enable Lumen features. This prevents breaking or changing any lighting paths within those projects.
Lumen is enabled from the Project Settings under the Rendering > Dynamic Global Illumination and Reflections categories.
Global Illumination and Reflections can be set independently. In each category, set the following to enable Lumen:
- Dynamic Global Illumination: Lumen
- Reflection Method: Lumen
When enabled, the property Generate Mesh Distance Fields will be enabled, if it is not already. It is required for Lumen's Software Ray Tracing mode. Requires the engine to be restarted.
Lumen Global Illumination replaces Screen Space Global Illumination (SSGI) and Distance Field Ambient Occlusion (DFAO). Lumen Reflections replace Screen Space Reflections.
When Lumen is enabled for a project, precomputed static lighting contributions are disabled and all lightmaps are hidden.
Lumen Lighting Features
Lumen brings robust dynamic global illumination to Unreal Engine and integrates well with other supporting systems in Unreal Engine 5, such as Nanite, World Partition, and Virtual Shadow Maps.
Unreal Engine 4 features, like Screen Space Global Illumination and Ray Tracing Global Illumination (RTGI) were not reliable or performant for projects that relied on real-time with a high enough quality. Also, these features did not fully integrate with other important systems to widely support most features of the engine.
Lumen Global Illumination
Lumen Global Illumination solves diffuse indirect lighting. For example, light bouncing diffusely off a surface picks up the color of that surface and reflects the colored light onto other nearby surfaces — creating an effect called color bleed. Meshes in the scene also block indirect lighting, which also produces indirect shadowing.
Lumen provides infinite diffuse bounces, which are important in scenes with bright diffuse materials like the white paint in the apartment below.
Unreal Engine 5's Nanite Virtualized Geometry allows for geometry to be much more detailed than ever before. Lumen achieves full-resolution shading, while computing indirect lighting at a much lower resolution for real-time performance.
Lumen with Sky Lighting
Sky lighting is solved as part of Lumen's Final Gather process. It includes sky shadowing, allowing indoor space to be much darker than outdoor lighting, providing a much more natural effect.
Lumen also provides lower-quality global illumination for Lit Translucency and Volumetric Fog.
Lumen and Emissive Materials
Emissive materials propagate light through Lumen's Final Gather with no additional performance cost. However, there's a limit to how small and bright emissive areas can be before they begin to cause noise artifacts to appear. It is inherently much more difficult to solve than manually placed light sources.
Lumen Reflections
Lumen solves indirect specular, or reflections, for the full range of material roughness values.
Diffuse global illumination and shadowed skylight can be seen in all reflections. Lumen Reflections also support Clear Coat materials, like the car example below.
Lumen provides glossy reflections on translucency, like the car windows in the example below.
Mirror reflections are not currently supported.
Supported Light Types and Other Features
At a high level, Lumen supports the following:
- All Light Types are supported, which includes Directional, Sky, Point, Spot, and Rect Lights.
- Light Functions are supported on Directional Light only.
- Lights with their Mobility set to Static are not supported because Static Lights are stored completely in lightmaps and their contribution is disabled when Lumen is enabled.
Lumen Settings
Settings for Lumen are found in two places: Project Settings and the Post Process Volume.
Lumen Project Settings
All Project Settings that are for, or affect, Lumen are found in the Engine > Rendering section. Project Settings contains all the default settings for Lumen for the project.
Below is a listing of all settings that are needed by, or affect, Lumen:
Property Name | Description |
---|---|
Global Illumination | |
Dynamic Global Illumination Method | Choose the type of dynamic global illumination you want to use in your project. |
Reflections | |
Reflection Method | Choose the type of dynamic reflections you want to use in your project. |
Lumen | |
Use Hardware Ray Tracing when available | Uses Hardware Ray Tracing for Lumen features when supported by the video card, RHI, and operating system. Lumen will fall back to Software Ray Tracing otherwise. Hardware Ray Tracing has significant scene update costs for scenes with more than 100,000 instances. See Ray Tracing Performance Guide for information. |
Ray Lighting Mode | Controls how Lumen Reflection rays are lit when Lumen is using Hardware Ray Tracing. By default, Lumen uses Surface Cache for best performance, but can be set to Hit Lighting for Reflections for higher quality. |
Software Ray Tracing Mode | Controls which tracing method Lumen uses when ray tracing the scene. Detail Tracing traces against individual mesh's Distance Fields for the highest quality. Global Tracing traces against the lower detail Global Distance Field for fastest traces. |
Hardware Ray Tracing | |
Support Hardware Ray Tracing | Enables ray tracing from supported operating systems, RHI, and video cards for higher quality results. |
Software Ray Tracing | |
Generate Mesh Distance Fields | Whether to build distance fields of Static Meshes. This is needed for Software Ray Tracing with Lumen and Distance Field Ambient Occlusion which is used to implement Movable Sky Light shadows and ray-traced distance field shadows on Directional Lights. Enabling this increases build times, memory usage and disk size of Static Meshes. |
Distance Field Voxel Density | Determines how the default scale of a mesh converts into Distance Field Voxel dimensions. Changing this causes all distance fields to be rebuilt. Large values consume memory very quickly. |
Post Process Settings
Post Process Volumes contain overrides and artist-controlled properties for Lumen. The settings are found in the Global Illumination and Reflections categories.
Below is a listing of all settings for Lumen found in the Post Process Volume:
Property Name | Description |
---|---|
Global Illumination | |
Lumen Scene Lighting Quality | Larger scales cause Lumen Scene to be calculated with a higher fidelity, which can be visible in reflections, but at a higher GPU cost. |
Lumen Scene Detail | Controls the size of instances that can be represented in Lumen Scene. Larger values ensure small objects are represented, but increase GPU cost. |
Lumen Scene View Distance | Sets the maximum view distance of the scene that Lumen maintains for ray tracing against. Larger values increase the effective range of sky shadowing and global illumination, but increase GPU cost. |
Final Gather Quality | Increases the quality of Lumen Global Illumination and reduces noise being rendered, but increases the GPU cost of rendering it. |
Max Trace Distance | Controls the maximum distance that Lumen should trace while solving lighting. Values that are too small cause lighting to leak into large areas, such as caves. Large values increase the GPU cost to render the scene. |
Lumen Scene Lighting Update Speed | Controls how much Lumen Scene is allowed to cache lighting results to improve performance. Larger scales cause lighting changes to propagate faster, but increase GPU cost. |
Final Gather Lighting Update Speed | Controls how much Lumen Final Gather is allowed to cache lighting results to improve performance. Larger scales cause lighting changes to propagate faster, but increase GPU cost. |
Quality | Increases the quality of Lumen Reflections on surfaces, and reduces noise being rendered, but increases the GPU cost of rendering them. |
Ray Lighting Mode | When using Hardware Ray Tracing with Lumen, this setting controls whether reflections will reuse the Surface Cache for cheap lighting, or calculate lighting at the hit point for higher quality. |
Additional Notes
The following are some additional considerations to keep in mind while working with Lumen features in your projects.
Lumen Lighting Update Speed
Lumen uses a number of caches to achieve real-time performance. While local lighting changes propagate quickly, global lighting changes, like disabling the Sun, can take multiple seconds to propagate. Projects can use the Lumen Scene Lighting Update Speed and Final Gather Lighting Update Speed controls in the Post Process Volume to work around this delay at the cost of increased GPU cost.
Disabling Static Lighting for the Project
Precomputed lighting from Static lighting is removed when Lumen is enabled. You can disable precomputed lighting entirely for your project from the Project Setting under the Engine > Rendering section by disabling Allow Static Lighting.
Disabling Static lighting also saves some static lighting overhead with shader permutations. It also allows Material Ambient Occlusion to work with Lumen Global Illumination.
Projects that already use Static Lighting will have their lightmaps loaded into memory and on disk until Force No Precomputed Lighting is enabled in the World Settings of an already loaded Level. You then need to rebuild the lighting and save the Level to remove lightmap data.
Material Ambient Occlusion
Lumen Global Illumination supports Material Ambient Occlusion, which provides reliable self-occlusion on Skeletal Meshes.
To use Material Ambient Occlusion with Lumen:
- Disable Allow Static Lighting in the Project Setting to create space in the GBuffer.
- Set the Material to output to Ambient Occlusion.
Lumen Global Illumination supports Material Bent Normal Maps. However, these are significantly more expensive than Material Ambient Occlusion with little visual improvement.
To use Bent Normal Maps with Lumen:
- Set
r.GBufferDiffuseSampleOcclusion=1
in the[SystemSettings]
section of your project's DefaultEngine.ini configuration file and restart the editor. - Set up the Material to output to the Bent Normal custom output node.