This is the documentation for Enlighten.

Implementation guide


This section describes the pipeline steps you need to implement in your engine to use the Enlighten workflow.

Before you read this section, we recommend you read How Enlighten works.

We assume a typical game engine with the following components:

Editing tools: The tools used by the artist to edit a scene and preview the results as they would appear in the game renderer. These tools can also generate game-ready data for the...

Game runtime: The renderer and game logic that runs on the target platform.

Pipeline steps

To implement the Enlighten workflow, add the following pipeline steps to each component:

Editing tools

1. Provide a way for the artist to configure the radiosity properties and indirect lighting resolution for the scene.

2. Export the Enlighten scene and run the Enlighten precompute.

3. Gather the Enlighten runtime data and store it in a form ready for your game runtime to load. 

Game runtime

1. Load the Enlighten runtime data that you previously stored.

2. Drive Enlighten runtime radiosity updates with your light sources and material colors.

3. Modify your renderer and shaders to render with Enlighten indirect lighting.

Units

Enlighten takes as input information about your scene such as the position of objects and intensity of light sources. Enlighten does not impose a choice of physical unit system for these quantities. You are free to use any unit of your choice to represent distance or light intensity. To avoid cost and complexity for unit conversions, it makes sense to use the same distance and light intensity units for Enlighten as you use in your engine.

For example, your engine might define the location of an object in your world as a physical unit like centimeters or inches, or an arbitrary unit of distance. If your lighting is modelled on the real world you might define light intensity as a physical unit, and if not you might use an arbitrary light intensity unit specific to the engine.

When creating the Enlighten scene, use your choice of units to specify object locations, the size of lightmap pixels and spacing between probes. When you provide light sources to Enlighten, use your choice of units to specify the light intensity.

Error reporting

Enlighten APIs report useful error and warning messages to aid your implementation. Before you use these APIs, call the GeoAttachSystemLogger or GeoAttachLogger functions to log messages to an output console of your choice. For more information, please refer to Message Reporting and Error Handling.