Enlighten’s new feature set for open world games
With the constant goal to increase visual quality, gameplay experience and immersion, developers have been growing the size of their levels. Flat, simple scenes have slowly morphed into vast, realistic realms where the player is allowed to move around freely and the line of sight is often unblocked by near objects. In such games, the draw distance extends for many kilometres and new rendering challenges are introduced.
The traditional method of global illumination for open worlds, baking and using mip maps, allows for moderate quality in terrain with a low bounce rate, such as a flat field. However, in more complex terrains, such as valleys, cliffs and canyons, computing the indirect light bounce is a challenge and often results in static, low quality effects.
Methods of achieving dynamic global illumination have even bigger challenges. Most past approaches have been GPU based and could only calculate a single light bounce; these put strain on the already loaded graphics card and only resulted in incomplete, dull lighting.
Enlighten 3.04, released at GDC 2016, includes features that enable high quality, dynamic global illumination in large, complex worlds.
Enlighten now features an advanced LOD mechanism specially targeted at terrain systems that allows the game to solve distant geometry that is not seen by the player at a lower resolution, while maintaining the higher resolutions in close to medium range. This means that performance can be improved without compromising the visual experience.
After terrain system and geometry mark-up, the precompute will generate different LODs for that system and propagate them throughout the precompute pipeline. The runtime integration will then determine, based on the camera position, which LODs need to be solved. This will, in most cases, be a small subset of the full LOD set, since most terrain is expected to be far away. A smooth blend between LODs allows for a seamless transition when a character moves around the world and empowers artists to experiment with fully dynamic lighting conditions in large world games without worrying about performance.
Enlighten now features LOD generation for non-terrain lightmaps (e.g. rocks, cliffs, houses). The Enlighten run-time can solve global illumination at a lower level of detail for distant objects, and write directly into the textures that the game is going to render, saving time and bandwidth.
Similar to terrain LOD, the lightmap LOD mechanism generates Enlighten system lightmaps at different resolutions, and gives the developer control over which resolutions should be solved and rendered at a given time. As an example, consider the hut model in Image 3 below. When the player/camera is close, we want to solve indirect light at high fidelity; LOD 0 is selected. However, as the camera moves away we are less interested in the fine details; LOD 3 could be used at this point. This results in a smoother and quicker convergence of indirect light especially in parts of the scene where wide vistas are being rendered.
Enlighten now supports a level of detail solution for probes. The probe LOD feature allows the user to solve a subset of probes within a probe set. Far away probes are solved at a lower frequency than probes close to the camera. The High Level Runtime API has a facility for specifying the rate at which higher-detail LODs are updated. Scenes with a high density of probes will see a greater benefit when using probe LOD, as it can greatly reduce solve time.
Enlighten 3.04 also offers support for octree probe LOD. Your integration could use this to improve the performance of distant probe-lit objects and to improve the quality of lighting on large objects which span several probe positions.
Unreal Engine 4 specific features:
Per-pixel probe lighting
With Enlighten per-pixel probe lighting, pixel shaders sample directly from Enlighten probes. As they are running on the GPU, no additional CPU cost per-mesh is incurred. This means we can have an even larger number of meshes – including moving meshes – that are lit using Enlighten probes. Large meshes lit by Enlighten probes also have a much higher fidelity in the indirect lighting.
Lighting static objects with probes can greatly benefit the artist’s workflow. Now a larger number of probe-lit objects are possible, and they can be lit with high fidelity, artists can choose to light complex static objects, such as the shipwrecks or trees in Seastack Bay, with probes. This removes the need to manually author UVs.
Enhancing UE4’s Dynamic Sky Lighting
UE4’s Dynamic Sky Light with Distance Field AO gives good quality results for sky shadowing in outdoor areas, but does not provide shadows for larger scale features such as cliffs, caves or indoor areas. The Enlighten UE4 integration can now provide sky shadowing for larger scale features, along with bounce lighting, when using any existing Dynamic Sky Light actor.
Enlighten support for UE4’s procedural Landscape Grass.
Landscape Grass can now be used in levels lit by Enlighten, with no additional authoring required.