This is the documentation for Enlighten.

Advanced techniques

Mesh area light proxies

To get precise control over area light sources, the artist can create a special proxy mesh to be used as an area light source. In this scenario, we want the surface to emit light with full contribution, but not reflect or block incoming light. To achieve this, when the artist has marked the material as a a special area light source, set both indirectTransparency and indirectReflectivity to one. To prevent secondary bounces from the area light geometry, assign surfaces using the material a black (zero) albedo.

For this type of material that will emit bright light at runtime, set isEmissive=true. This can boost the accuracy of emissive lighting particularly for small emissive surfaces.

High quality radiosity

When the cost of Enlighten radiosity computation is not a priority, such as for offline rendering, you might want to boost the quality of the output. This would normally be done at the same time as increasing the indirect lighting resolution.

  • budget: The number of irradiance form factors to store. Increases runtime memory and cpu.

    this attribute is named irradBudget when used in a parameterSet element.

  • quality: The number of rays to cast for computing irradiance form factors. Increases precompute time.

    this attribute is named irradQuality when used in a parameterSet element.

Radiosity-only cubemap output

Enlighten provides the option to generate radiosity-only cube map output which can be composited with high frequency material albedo and direct lighting information in your engine on the GPU. This low-frequency indirect lighting output is analogous to the irradiance output from Enlighten's system solver and could be computed at a lower resolution than the final cube map with which it is composited. The images below shows a visualisation of radiosity-only cube map output.

To enable radiosity only cubemap output in the high level runtime, construct UpdateManagerWorkerProperties with m_ComputeRadiosityOnlyCubeMaps set to true and call IUpdateManager::EnqueueSetWorkerProperties.

Albedo and Radiosity

Radiosity only