This is the documentation for Enlighten.
Enlighten SDK 3.12 Release Notes
Patches
3.12.P1
- Addressed increase in peak memory usage for precompute in massive world which contains probe regions with dependencies limited to only directly adjacent systems.
- Fixed precompute error RTC_ERROR_OUT_OF_MEMORY reported by CreateOutputProbeSet task when running the HLBS precompute in a massive world with AgentUsage=Default.
- Fixed an intermittent crash that could occur during the precompute when a mesh has an extremely large cluster size.
- Fixed precompute warnings incorrectly reported as errors when using SNDBS2 distributor.
- Fixed missing or incorrectly placed probes when the probe regions within a single zone cover an extremely large volume of space.
- Improved error message from HLBS precompute when probeRegion element does not have a zone attribute.
- Fixed division by zero exception in per pixel probe lighting runtime update.
- We now distribute Enlighten core libraries built with Visual Studio 2019 16.8.5 and VC tools version 14.28 for Win32, Win64 and XboxOne.
- Significantly reduced the size on disk of the GeoRayTrace library by removing dead code.
- Enlighten libraries for Windows and Xbox are now compiled with /Zc:inline to reduce their size on disk and improve link times.
New features
Use automatic probe placement and per pixel probe lighting at scale in a massive world:
- Efficiently light large open spaces with additional probe placement resolution options: 1/32, 1/64, 1/128, 1/256.
- Significantly reduced precompute time for automatic probe placement in a scene with many probes across a large volume of space.
- Significantly reduced update time and memory use for per pixel probe lighting in a scene with many probes across a large volume of space.
Improved compatibility with real time ray tracing:
- Per pixel probe lighting now provides valid lighting for positions behind the camera.
Improvements
Faster Enlighten precompute:
- The precompute time is now significantly reduced in a scene where automatic probe placement regions cover a large volume of space.
- The precompute now uses Intel Embree library version 3.11.0 to take advantage of recent performance improvements.
Improved samples to aid your implementation of Enlighten:
- The MinimalExample scene now demonstrates the Enlighten pipeline for a scene which contains more than one instance of a mesh with more than one material.
- The Sample Pipeline and Sample Runtime applications now produce correct emissive lighting for meshes with more than one material colour.
Bug Fixes
- Fixed intermittent precompute failure when Windows regional format set to a language other than English, Japanese or Chinese.
- Fixed a long delay in the precompute "Updating dependencies..." in a scene which contains 10K+ systems or probe sets.
- Fixed a crash when per pixel probe lighting is in use and probes are placed very far from the origin.
- Fixed minor seams in per pixel probe lighting that may appear when the viewpoint moves around the level while indirect lighting is static.
- Fixed minor per seams in per pixel probe lighting at the boundary between two zones.
Deprecated
- The Probe LOD and IProbeSetManager functionality is deprecated. To minimise probe solve and interpolation time in a large world we recommend to use per pixel probe lighting
- The removalMode parameter of IUpdateManager::EnqueueRemoveProbeSet is deprecated.
- IUpdateManager::UpdatePppi and IViewVolumeIntersector are deprecated. Please refer to the upgrade notes below.
- IUpdateManager::GetPppiRequiredOutputTextures and IUpdateManager::SetPppiOutputWorkspace are deprecated. Please refer to the upgrade notes below.
- IUpdateManager::Clear is deprecated. Instead, please call IUpdateManager::Release and afterwards create a new instance of the high level runtime.
Removed
General:
- The smooth bevels functionality was removed. To light large complex meshes, we recommend to use per pixel probe lighting.
- The Enlighten3PrecomputeLoader / Enlighten3PrecomputeLoaderBuilder libraries were removed. To extract and store persistent radiosity data, we recommend to follow the implementation guide.
- The low level C-style API for Per Pixel Probe Interpolation (PPPI) was removed. Please refer to the implementation guide for per pixel probe lighting.
Build configurations:
- The distribution no longer includes Enlighten core libraries built with Visual Studio 2013.
Upgrade Notes
The minimum system spec supported by the Enlighten precompute is now Windows 10 (64-bit) on Intel Core (at least i3-2100) or AMD FX/Ryzen (at least FX-4100). The precompute reports an error if your CPU does not support Advanced Vector Extensions (AVX).
High level build system:
- The location on disk of runtime data created for automatically generated probe sets has changed. Please refer to the implementation guide.
High level runtime:
- IUpdateManager::EnqueueRemoveProbeSet now takes the pointer to the BaseProbeSet object returned by IUpdateManager::AllocateProbeSet. Please update your code.
Per pixel probe lighting:
- The implementation of SamplePppiVirtualTexture has changed slightly. Please update your shader to match.
- The impact of invalid (culled) probes is now more obvious than in previous versions. Please double check that your shader multiplies the lighting result by PppiSample::InverseValidity.
- Instead of IUpdateManager::UpdatePppi, please provide the viewOrigin and lodDistance arguments to IUpdateManager::Update. The viewVolume argument is no longer required.
- Instead of IUpdateManager::GetPppiRequiredOutputTextures, please call Enlighten::GetPppiRequiredOutputTextures with the same configuration you provide to MultitheadCpuUpdateManager::Create.
- Instead of IUpdateManager::SetPppiOutputWorkspace, please use UpdateManagerProperties::m_PppiOutputWorkspace and UpdateManagerProperties::m_PppiTextureUpdateHandler.