How Enlighten works

This page helps you understand the key concepts behind Enlighten. We recommend that you read this page before working with Enlighten.

The Enlighten pipeline

The Enlighten pipeline is integrated with UE4 to provide real time indirect lighting. The two key components of the Enlighten pipeline are the Enlighten precompute and the Enlighten runtime.

The Enlighten precompute creates optimized runtime data about static actors (actors with a fixed shape and position).

The Enlighten runtime takes the Enlighten runtime data as input, along with the direct lighting and material information provided by the engine. The Enlighten runtime solves radiosity and produces three types of output: lightmapsprobes and cubemaps. These outputs contain only diffuse indirect illumination, and consist of bounces from many light sources. The UE4 renderer samples these outputs to provide indirect lighting for each mesh.

Geometry and material colorsDirect illumination onlyDirect and indirect illumination

Radiosity

Enlighten uses a version of the radiosity algorithm to compute indirect lighting. The Enlighten precompute divides surfaces of the scene into chunks called clusters, and computes visibility form factors between all pairs of clusters. The Enlighten runtime progressively solves the radiosity equation, with one bounce per iteration, for an unlimited number of iterations.

Smaller cluster sizes provide greater accuracy in the indirect lighting, but increase the computation required in the precompute. For real-time rendering, relatively large clusters provide sufficient accuracy with minimal computation time.

Surfaces divided into clusters
Result of radiosity computation
Indirect lighting output

Asynchronous updates

The Enlighten radiosity computation runs entirely asynchronously on the CPU alongside the main renderer, without blocking rendering. It's generally not necessary to update the indirect lighting at the full frame rate. Decoupling Enlighten updates from the rendering means you can tune performance by trading processing time for latency in the lighting. This is particularly useful when the renderer is already pushing the GPU to its limit to hit a fixed framerate target, such as 60FPS on consoles, or even 90FPS in VR/AR applications.

Artist workflow

Before running the Enlighten precompute, you can change the lightmap resolution, the light probe density, and the location of cubemaps used for reflections. After the precompute, you can iterate on the lighting setup with instant feedback on your changes. You can then tweak and experiment with the lighting until you get the result you want.