This is the documentation for Enlighten.
Enlighten SDK 4.04 Release Notes
New features
Fast and reliable precompute
The Enlighten precompute is now much faster and more reliable, which significantly improves the artist workflow when using Enlighten in very large and highly detailed worlds.
This release includes many optimisations that combine to reduce precompute time and memory footprint by at least 50% in a typical world. In a very large world with millions of instances and high triangle density we measured more than 90% reduction in precompute time and memory footprint.
For very large and highly detailed worlds, improved geometry processing algorithms now prevent cases where the precompute might take forever or run out of memory. The artist can now focus on configuring the lighting to balance visual quality with runtime cost, without worrying about the precompute.
Separate sky with sky bounce
You can now apply sky lighting separately from bounce lighting for both lightmap lighting and per pixel probe lighting, and the result now includes secondary bounce from the sky.
The images below show combined sky and bounce on the left, and separate sky and bounce on the right.
The cliff wall is mostly indirectly lit. There is strong sunlight bounce from below, and strong sky lighting from above. With combined sky and bounce the cliff appears lit from no specific direction. With separate sky and bounce the cliff appears brightly lit from below by yellow bounce from the sun, and also brightly lit from above by blue sky.
The sample implementation demonstrates how to apply sky lighting separately from bounce lighting.
Limit bounce distance
To further speed up the precompute when your world is very large, we recommend to limit the bounce distance by configuring the radiosity dependencies to exclude radiosity systems that are far away.
This release adds a new global pipeline parameter Dependency Distance Threshold which makes it very simple to limit the bounce distance. Use this to limit the radiosity dependencies of all instances, probes and cubemaps to those radiosity systems which are within a specified distance.
Improvements
The Enlighten precompute now takes advantage of instancing to significantly reduce peak memory usage for worlds with many instances of the same geometry.
The maximum number of radiosity instances allowed in a single radiosity system has increased from 2^16 to 2^24. To allow this, the maximum number of target meshes allowed in a single geometry object is reduced to 256.
Added pipeline instance parameter Radiosity System Size. Radiosity instances are automatically grouped into a radiosity system with this target size in each dimension.
We now distribute Enlighten core libraries built with Visual Studio 2022 17.14.16 and VC tools version 14.44 for Windows and Xbox
Bug Fixes
The HLBS precompute process no longer fails with System.OutOfMemoryException when the available system memory is very low.
Fixed missing warning for excluded instance and incorrect warning when biased probe resolution exceeds allowed.
Fixed an unexpected precompute error when an Unlit instance refers to a geometry object with isTerrain set to true.
Fixed a stack overflow in the precompute CalculateSystemDependencies task with instances scaled very small.
Fixed a crash in the precompute GenerateSystems task for a scene which contains an empty probe region.
Fixed a crash in the precompute GenerateSystems task when a zone contains a Probe Radiosity instance followed by a Radiosity instance.
Fixed precompute excessive memory usage and incorrect results in a scene with a very high triangle density.
Fixed an error in the precompute CreateSceneOutput task when the scene is very large due to an unnecessarily low memory limit.
Fixed a rare crash in the precompute CompressLightTransport task.
Fixed a rare crash in the precompute CreateOutputProbeSet task.
Fixed a rare crash in the precompute CreateProbeOctree task.
Deprecated
The fixed point output formats OUTPUT_FORMAT_LRB and OUTPUT_FORMAT_RGBM are deprecated and will be removed in a future release.
Removed
The runtime libraries no longer support CPU models older than Intel Nehalem and AMD Bulldozer.
The distribution no longer includes Enlighten libraries and tools built with VS2017.
Upgrade Notes
The environment visibility data for per pixel probe lighting now contains four L1 SH coefficients rather than a single L0 SH coefficient. To update existing code that uses only the L0 coefficient:
Update your shaders based on PppiAtlasUpdate.hlsl and the SamplePppiVirtualTexture function in GeoRuntime/Resources/PppiCommon.cg to match the latest versions.
When you dispatch PppiAtlasUpdate.hlsl for the compute shader update, change the type of the environment visibility input buffer to R16G16B16A16_FLOAT.
Update your shaders that use PppiSample::EnvironmentVisibility to use the first coefficient.
Enlighten Pipeline: PipelineGlobalParameters is now passed to PrecomputePipeline::WriteScene instead of the PrecomputePipeline constructor.
Low level precompute API: CreateClustering now requires the IPrecompPackedSystem object for the home system.