Lumen Global Illumination and Reflections

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

Windows
MacOS
Linux

Lumen is Unreal Engine 5's new fully dynamic global illumination and reflections system that is designed for next-generation consoles. Lumen is the default global illumination and reflections system in Unreal Engine 5. It 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 in Unreal Engine 5 have Lumen Global Illumination and Reflections enabled by default, as well as their dependencies like Generate Mesh Distance Fields.

For existing projects, like ones created using Unreal Engine 4, Lumen is not automatically enabled. This is to prevent breaking or changing of any lighting paths within those projects.

Lumen is enabled through the Project Settings under the Rendering > Dynamic Global Illumination category. Set Dynamic Global Illumination Method to Lumen. This property also sets the Reflection Method to Lumen, and enables Generate Mesh Distance Fields which is required for Lumen's Software Ray Tracing mode.

projectsettings_gettingstarted.png

Lumen Global Illumination replaces Screen Space Global Illumination (SSGI) and Distance Field Ambient Occlusion (DFAO). Lumen Reflections replace Unreal Engine 4's Screen Space Reflections.

Enabling Generate Mesh Distance Fields requires the engine to be restarted. Lumen GI and Reflections can be enabled/disabled without restarting the editor and is important when wanting to do comparisons with and without dynamic global illumination and reflections.

For information on all project settings that affect Lumen, refer to the Lumen Project Settings section of this page.

Static Light contribution is disabled and all lightmaps are hidden when Lumen is enabled.

Lumen Lighting Features

Lumen brings robust dynamic global illumination to Unreal Engine for the first time and integrates well with other supporting systems in UE5, like Nanite.

In Unreal Engine 4, features such as Screen Space Global Illumination were not reliable and Ray Tracing Global Illumination (RTGI) was not performant for games with a high enough quality, and didn't integrate with other important systems.

Lumen Global Illumination

Lumen solves dynamic diffuse indirect lighting. For example, light bouncing diffusely off of a surface picks up the color of that surface and reflects the colored light onto other nearby surfaces; this effect is called color bleeding. 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

With Unreal Engine 5's Nanite technology, mesh geometry can be much more detailed than ever before. Lumen achieves full-resolution normal detail, while also 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. This includes sky shadowing which allows indoor spaces to be much darker than outdoor.

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. This 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.

The example below shows Lumen supporting Clear Coat materials.

Lumen_SkyLight.png

Supported Light Types and Other Features

At a high level, Lumen supports the following in Unreal Engine 5 Early Access:

  • All light types are supported. This 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 by Lumen.

Lumen Settings

Lumen settings are found in two places: Project Settings, and in Post Process Volumes.

Project Settings

Project settings for Lumen are found in the Rendering section. It contains default settings for Lumen.

ProjectSettings_Lumen.png

Lumen is enabled for the project with Dynamic Global Illumination Method and Reflection Method selections.

Project Settings also contain other default settings that affect Lumen:

  • Software Ray Tracing Mode provides options for how traces are performed.

  • Detail Tracing traces against individual mesh's Distance Fields for the highest quality render at a higher performance cost.

  • Global Tracing traces against the Global Distance Field for the fastest tracing at reduced quality.

  • Use Hardware Ray Tracing when available uses supported hardware to trace rays against scene geometry and otherwise defaults to Lumen's Software Ray Tracing when those criteria are not met. Support Hardware Ray Tracing is required to update the Hardware Ray Tracing Scene. For Early Access, tens of thousands of instances are supported and performance largely depends on your system hardware, and platform limitations. For example, some platforms recommend fewer than 40k instances and no more than 100k animated vertices. Improvements will be made in future releases.

  • Support Hardware Ray Tracing enables supported video cards, RHI, and operating systems to trace rays against scene geometry for the highest quality using Ray Tracing features.

  • Generate Mesh Distance Fields generates a Distance Fields representation for individual Static Meshes, which is needed for Software Ray Tracing in Lumen. It's also used with other dynamic lighting and shadowing methods using distance fields with movable Sky Light and Directional Lights.

Post Process Settings

Post Process Volumes provide overrides for Lumen in the Global Illumination and Reflections properties sections.

PostProcessVolumeOverrides.png

The Method properties use the selected Global Illumination and Reflections method set in the Project Setting unless overridden here. Lumen is the project's Global Illumination and Reflections method.

The quality of each is controlled using:

  • Final Gather Quality increases the quality of Lumen Global Illumination, and reduces noise being rendered, but will increase the GPU cost of rendering it.

  • Quality increases the quality of Lumen Reflections on surfaces, and reduces noise being rendered, but will increase the GPU cost of rendering them.

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.

Disabling Static Lighting for the Project

When Lumen is used, precomputed lighting from Static Lighting is removed. You can disable precomputed lighting entirely for the project by unchecking the box next to Allow Static Lighting in the Project Settings.

Disabling static lighting also saves some static lighting overhead with shader permutations. It also allows for Material Ambient Occlusion input and allows Material Bent Normals to work with Lumen Global Illumination.

Projects that 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 the Level. You then need to rebuild the lighting and save the Level.

Material Bent Normals

Lumen Global Illumination supports Material Bent Normal Maps, which provides reliable self-occlusion on skeletal meshes.

To use Material Bent Normal with Lumen:

  • Disable Allow Static Lighting in the Project Settings to create space in the GBuffer.

  • 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 BentNormal custom output node.

Lumen_ScreenTraces.png

Left, Lumen GI on a Skeletal Mesh with screen traces disabled.

Middle, Material Bent Normal has been set up.

Right, Material Bent Normal and Screen Traces re-enabled.