This is the documentation for Enlighten.

Enlighten UE5 4.02 Release Notes


Key Features

High quality glossy specular reflections

For only a minor increase in runtime cost, Enlighten reflections on surfaces with medium to high roughness are now much more accurate. Compared with the previous release, the shape of specular highlights and overall specular brightness in Enlighten reflections now much more closely matches static reflections.

The additional cost to solve the cubemap varies depending on the indirect lighting resolution of the surrounding area, and we measured an average of 1.5x the previous cost on the Enlighten thread. To revert to the previous behaviour, specify r.Enlighten.Cubemap.UseLegacyFilter=1 in the Engine config file.

The images below show spheres with roughness 0.4, 0.6 and 0.8 in a location lit indirectly with bright lighting coming from directly above, which is now more accurately captured in Enlighten reflections. The image on the left was created with release 4.01, while the image on the right was created with release 4.02.

Halved cost of per pixel probe lighting

This release significantly reduces the runtime cost of per pixel probe lighting. The remaining per pixel probe lighting update work that previously ran on the CPU now runs in a compute shader on the GPU. The update process now uses 16-bit float internal buffers, which halves the cost of per pixel probe lighting updates.

In a scene with densely placed probes, probe memory usage is less than half of the previous release, and the render thread CPU cost for probe lighting updates is around half of the previous release. The cost of asynchronous updates for probe lighting on the Enlighten thread is also reduced by around 10%.

4.02.P1 Smoother per pixel probe lighting

Enlighten automatically adapts the per pixel probe lighting detail level as objects move closer or further away. When the lighting intensity differs significantly between detail levels the transition is now stable and smooth without obvious noise. When temporal anti-aliasing is enabled this transition is even smoother and often invisible.

The image on the left shows the transition in Release 4.02.R. The image on the right shows the smooth transition in 4.02.P1.

LitLit IGN

The images below show the same comparison with simple white materials to make the comparison more obvious.

UnlitUnlit IGN

4.02.P1 Smarter automatic probe placement

Enlighten uses invalid back-faces to detect areas that are outside the world and do not need indirect lighting.  This release improves the way automatic probe placement detects areas that are outside the world, so that areas inside the world always have valid Enlighten indirect lighting.  This eliminates broken Enlighten indirect lighting in areas that see invalid back-faces.  The Enlighten indirect lighting in such areas may still be much less accurate and could appear unexpectedly bright or dark.  We still recommend not to leave invalid back-faces visible in areas where accurate indirect lighting is important.

The new Probe Positions view mode highlights probes that see invalid back-faces.  After you run Parameterize, we recommend to use this view mode along with the Radiosity Backfaces view mode to identify areas that see invalid backfaces.  The images below show an area which sees an a visible invalid back-face.  The Lit view shows acceptable Enlighten indirect lighting for the foliage meshes that are lit by per pixel probe lighting.  The Radiosity Backfaces view mode shows the invalid back-face in orange.  The Probe Positions view shows the locations of probes that see the invalid back-face in pink.

Enlighten indirect lighting for World Partition

This release adds Enlighten indirect lighting for levels that use World Partition. This is still a work in progress and we do not yet recommend to use it in production.

The following World Partition features are expected to function with Enlighten indirect lighting, with some limitations:

  • Level Instancing with Level Instance Actor and Packed Level Actor.
    • The Detail lighting mode may not work correctly for meshes within a Level Instance.
    • Level Instances that use Level Streaming mode may not work correctly.
    • UE5.3  Partial loading of level instances must be disabled: Set wp.Editor.DisableLevelInstanceEditorPartialLoading=1 in DefaultEditor.ini.
  • One File Per Actor: Only in levels that use World Partition.
  • Data Layers: Dynamically Loaded data layers may not work correctly with Enlighten lighting, so we recommend to disable Enlighten for actors assigned to these data layers.
  • World Partition HLOD: Only sky lighting is available for HLOD proxy meshes.

For a World Partition level that was created in unmodified UE5, to ensure that Enlighten indirect lighting works correctly, please use the commandlet to re-save all actors with the Enlighten UE5 editor:

UnrealEditor.exe <project> <mapname> -run=WorldPartitionBuilderCommandlet -SCCProvider=None -builder=WorldPartitionResaveActorsBuilder

We plan to address the following known issues in a future release:

  • Automatic checkout of packages from source control does not work correctly for the Enlighten Precompute commandlet.
  • Levels with more than one World Partition Grid do not work correctly.
  • After the precompute or saving the level in the editor with only part of the world loaded, actors that are not loaded will not reflect light. To restore correct behaviour, run the precompute via the Enlighten Precompute commandlet.
  • After loading and unloading actors in the editor, Enlighten System Container actors are incorrectly marked modified.
  • Foliage with Detail lighting mode may not work correctly. For best results, set the Instanced Foliage Grid Size to the same as the World Partition Grid Cell Size.
  • Warning and errors reported by the Enlighten Precompute are confusing because they refer to a World Partition Grid Cell rather than an actor.
  • The Enlighten Precompute commandlet may report incorrect warnings about assets modified during the precompute of a World Partition level.
  • Some Enlighten related warnings in the Map Check may not be reported for a World Partition level.
  • The Enlighten System Stats page does not work for a World Partition level.

Probe lighting leak reduction

This release automatically reduces the impact of light leaking through thin walls for meshes lit by probes. In areas where this type of light leak would previously occur, the automatic placement of Enlighten probes is improved to reduce light leaking, with no significant increase in runtime cost.

For best results with automatic probe placement, eliminate visible invalid back-faces in areas that are visible to the camera. In areas where back-faces are visible, Enlighten indirect lighting may be incorrect or missing.

Efficient streaming of many instances

This release automatically shares Enlighten UVs between instances of the same mesh that have a slightly different scale. This prevents hitches when streaming a level that contains many instances of the same mesh. Compared with the previous release, the effective lighting resolution of an instance may increase or decrease slightly, but the overall resolution should be very similar. In some rare cases this change could cause lightmap lighting artifacts or even errors related to excessive lightmap resolution.

Independent radiosity simulations

This release makes it simple to quickly switch between two Enlighten data sets that have completely independent lighting. This enables a transition between two independent radiosity simulations without a loading screen. To make large scale changes to the entire world that affect radiosity, precompute multiple versions of the same world and switch between them. For a quick transition between two independently precomputed areas of the world, precompute multiple independent areas and switch between them.

Enlighten indirect lighting is only available for one independently precomputed area at a time. Other areas can still be visible and will only receive sky lighting, which works well for distant areas.

Use the Partition Name property of the Enlighten System Container actor to specify the Enlighten partition for the containing level. All levels with the same Enlighten partition name will be precomputed together. To change the active Enlighten partition in game mode, use the SetEnlightenActiveLevel blueprint function.

To specify the translation of a level at runtime, use the LoadLevelInstance function. All the levels with the same Enlighten partition name must be assigned the same translation. Rotation is not currently supported.

4.02.P1 Change radiosity update budget in game

On platforms with limited compute power available we recommend to limit the CPU budget assigned for asynchronous Enlighten radiosity updates.  You can now change the budget while the game is running using a blueprint function.

Use the SetUpdateBudget Blueprint function to set the Enlighten radiosity update budget.  This specifies the maximum CPU budget that can be used by Enlighten in a single update frame.

GeoRadiosity with scaled displays

To ensure compatibility with High DPI displays and Remote Desktop, GeoRadiosity now renders with D3D11 instead of D3D9. By default, the GeoRadiosity window is now automatically scaled to match the display scale setting of the display onto which the window is positioned.

It is not currently possible to resize or maximize the GeoRadiosity window. This functionality will be added in a future release.

Important changes

The Enlighten lighting resolution for Landscape is now controlled by the Enlighten Quality property of the Landscape actor.

When the world was precomputed with the commandlet and Share Lightmaps Across Levels is disabled, the initial indirect lighting is no longer stored when a level is saved, to prevent a single frame flicker in per pixel probe lighting when the level is loaded.

The minimum size of probes shown in the Enlighten Probes view mode is now proportional to the minimum spacing between probes in the level. This ensures that when probe resolution is very high, probes shown in the visualisation do not appear too large.

Enlighten now skips some unnecessary precompute steps that could take a long time when the world contains a very large number of instances. These steps are only required to view the exported Enlighten scene within the GeoRadiosity debugging tool.

4.02.P1 The Enlighten precompute now reports a detailed warning message when an instance or probe region covers an extremely large volume of space.  When this warning is reported, we recommend to reduce the Enlighten probe lighting resolution for the problem actor.

4.02.P1 The Enlighten precompute now reports a useful error message when a mesh requires too many lightmap pixels.

UE5.4 Enlighten now supports mobile forward renderer.  When using it set r.Mobile.Forward.EnableClusteredReflections=1 in DefaultEngine.ini.

Fixed bugs

  • Fixed artifacts in per pixel probe lighting that could occur when a surface is exactly aligned with the automatic probe placement grid.

  • Fixed a crash during the CreateOutputProbeSet stage of the precompute that could occur in a world with very high probe resolution and dense geometry.

  • Fixed a bug in IntelTBB library which could trigger a precompute crash only with very specific build configurations.

  • Fixed a warning "Duplicated Enlighten ID" for a static mesh actor that was spawned by a Blueprint.

  • Fixed failure to report an error when the precompute memory limit was exceeded for a very complex scene.

  • Fixed a minor memory leak in the CreateLightTransport stage of the precompute that would cause unnecessary warnings.

  • Fixed incorrect Enlighten lighting after running the precompute in the editor for an Instanced Static Mesh component with Contribute Lightmap lighting mode.
  • Fixed a crash when loading a level that contains a Blueprint of an Instanced Static Mesh component.
  • Fixed a crash when duplicating an InstancedStaticMesh component from within the Details panel.

  • Fixed missing bounce lighting for a Nanite mesh when the level is saved in the editor in D3D12 mode.
  • Fixed a warning "Duplicated Enlighten ID" for level which contains a Blueprint of an InstancedStatic Mesh component that was saved in unmodified UE5.
  • Fixed incorrect ray traced Enlighten shadows for a Directional light.
  • 4.02.P1 Fixed unexpected black areas in probe lighting that could occur around thin walls even when no invalid back-faces are visible.

  • 4.02.P1 Fixed a crash when creating a Packed Level Actor when World Partition is not in use.

  • 4.02.P1 Fixed a crash that occurred after a move or delete of an actor followed by precompute in editor of a partitioned world which contains Enlighten data from a previous precompute.

  • 4.02.P1 Fixed a crash that occurred after precompute in editor of a partitioned world which contains an previously unsaved Enlighten data from a previous precompute.

  • 4.02.P1 Fixed an extremely rare crash with the error "Detachment inconsistency" that could occur after the precompute of a very large world.

  • 4.02.P1 Fixed a warning "Duplicated Enlighten ID" that would occur when two Static Mesh actors are spawned via Blueprint.

  • 4.02.P1 Fixed a precompute hang which could occur in a scene which contains millions of foliage instances with Probe lighting mode.

  • 4.02.P1 Fixed errors related to LandscapeMeshProxyComponent after precompute of a partitioned world that uses Landscape and HLOD.

  • 4.02.P1 Fixed missing Enlighten lighting in a partitioned world that contains actors that are always loaded.

  • 4.02.P1 Fixed crash on Play In Editor after precompute in editor of a partitioned world that contains actors that are always loaded.

  • UE5.2 Fixed extremely bright lighting on consoles and Play In Editor with a Sky Light actor that has Real Time Capture enabled.
  • UE5.4 Fixed a crash that occurred after reimporting a static mesh asset that is open in the editor while Enlighten Charts view is enabled.
  • UE5.4 Fixed incorrect behavior of Probe Positions view mode which caused more probes than expected after saving and loading the level.

Known Issues

The Rect Light actor is not supported on mobile platforms.

The default forward shading mode for mobile platforms is not supported.

  • To use Enlighten on mobile platforms, please configure your project to use deferred shading.
  • UE5.2 To use Enlighten on Nintendo Switch, set bUseDesktopForwardShading=True in DefaultEngine.ini (not required for Enlighten UE5.4, see note below).
  • UE5.3 To work around errors when packaging Mac builds, add the -legacyxcode option to the UnrealBuildTool command.
  • UE5.4 Using Enlighten on Switch no longer requires setting bUseDesktopForwardShading=True.  It is also recommended by Epic to use mobile forward renderer on Switch.
  • UE5.4 Nanite compute materials are not supported with Enlighten lighting.  To work around this set r.Nanite.AllowComputeMaterials=0 in DefaultEngine.ini.