Lumen Global Illumination and Reflections

A high level overview of Lumen's dynamic global illumination and reflections features.

Choose your operating system:

Windows

macOS

Linux

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.

projectsettings_gettingstarted.png

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.

LumenTechDemo_2.png

Lumen provides infinite diffuse bounces, which are important in scenes with bright diffuse materials like the white paint in the apartment below.

LumenGI_Apartment.png

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.

LumenTechDemo_3.png

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.

LumenTechDemo_1.png

Lumen also provides lower-quality global illumination for Lit Translucency and Volumetric Fog.

shadowedfogvolume.png

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_Emissive.png

Lumen Reflections

Lumen solves indirect specular, or reflections, for the full range of material roughness values.

LumenReflections.png

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_SkyLight.png

Lumen provides glossy reflections on translucency, like the car windows in the example below.

Mirror reflections are not currently supported.

lumen-glossy-reflections.jpg

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.

ProjectSettings_Lumen.png

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.

PostProcessVolumeOverrides.png

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 Material Ambient Occlusion

Left, Lumen GI on a Skeletal Mesh with only Screen Traces (Software Ray Tracing); Right, Material 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.