Table of Contents | ||||||
---|---|---|---|---|---|---|
|
...
New features
Next generation per pixel probe lighting
This release massively reduces the cost of per pixel probe lighting render path, along with other major improvements. Per pixel is now the recommended probe lighting method, and replaces per mesh probe lighting.
Per pixel probe lighting texture updates that previously ran on the CPU can now run in a compute shader on the GPU, reducing the wall clock time by a couple of orders of magnitude. This enables you to increase the maximum probe placement resolution, for more accurate indirect lighting.
Other rendering improvements include:
- Zero cost blending between levels of lighting detail, to prevent lighting pops as the camera moves further away from a surface lit by probes.
- Compute the maximum required atlas size for your world in advance with ComputePppiAtlasMaxima, so you can determine in advance the required size of rendering resources.
Accurate and performant radiosity without lightmaps
This release enables extensive use of the Probe Radiosity instance type across massive worlds, to the same degree as regular Radiosity. Please refer to the upgrade notes below for details of the minor API change required to continue use of Probe Radiosity.
The new radiosity solution for probe lit meshes is accurate, stable and efficient when used at scale. For large meshes with complex organic shapes that are difficult to unwrap, choose the Probe Radiosity lighting mode and forget about lightmap UVs.
For large meshes formed of large flat faces or box shapes, Enlighten may still produce the best result with a lightmap.
Faster precompute with many cores
This release includes optimization of the Enlighten precompute for workstations with many CPU cores. In worlds which use probe lighting extensively, the precompute now makes full use of available CPU resources when many cores are available. On a powerful workstation with 16/32/64 cores, local precomputes finish in significantly less time.
Enlighten Pipeline: automatic probe placement
The Enlighten Pipeline library can now automatically add the required probe regions to the Enlighten scene for an instance that will be lit by probes. Simply specify the desired probe resolution when you call EnlightenPipeline::AddInstance.
The Enlighten Pipeline library can now export probe regions efficiently for very large volumes or very large meshes. The new EnlightenPipeline::AddProbeRegion function takes a closed mesh volume as input, replacing the IPrecompVolumeQuery interface.
Enlighten Pipeline: useful error messages
The Enlighten Pipeline library now reports useful error messages when the API is used incorrectly. This type of error is considered fatal and should never occur when the API is used correctly. You can use the library without exception handling enabled, but you can also choose to enable exceptions if you wish to handle the error at a higher level and attempt to continue.
Improved SNDBS precompute
When running the precompute distributed by SNDBS, tasks are now distributed more effectively to reduce the total time taken.
Sample implementation
The sample implementation has been expanded to show how to use core Enlighten functionality required for a typical implementation.
...
- For Probe Radiosity systems, the precompute now outputs a RadSystemCore object that must be provided to IUpdateManager::AllocateSystem.
Precompute pipeline:
- Please update your implementation to use PipelineScene::AddProbeRegion which places probes to cover the closed mesh described by PipelineVolumeProbeRegion.
Per pixel probe lighting:
- Please update your implementation to take advantage of the new compute shader update path. Please refer to the implementation guide for details.
Patches
4.00.P1
- Fixed major seams in per pixel probe lighting within areas with less than 1/16 resolution.
- Fixed minor seams and light leaks in per pixel probe lighting that could occur within interior spaces.