- GetRayTracingCallableLibrary() similar to how we handle hitgroups.
FindRayTracingCallableIndex(...) to query callable shader index in RTPSO.
#rb yuriy.odonnell
#preflight 628620c99016c6dd8974b510
[CL 20278150 by tiago costa in ue5-main branch]
- LayerIndex can be specified in FRayTracingGeometryInstance.
- Apply offset to FRayTracingInstanceDescriptorInput.OutputDescriptorIndex so that the instance buffer is divided into different one subrange per layer.
#rb yuriy.odonnell
#preflight 62723d054c664a162465e0c4
#jira none
[CL 20039080 by tiago costa in ue5-main branch]
- Each layer corresponds to a separate TLAS.
- Values returned by FRHIRayTracingScene::GetSizeInfo() are large enough to contain all layers.
- Higher level code can use FRHIRayTracingScene::GetLayerBufferOffset(...) to query the offset of individual layer TLAS when building SRVs.
- Updated FRayTracingSceneInitializer2 so higher level code specifies how many instances are in each layer.
#rb yuriy.odonnell
#preflight 62714094e16e280be60fc35c
#jira none
[CL 20025952 by tiago costa in ue5-main branch]
* Sample quantization & copying is now parallel
* Oodle is used to compress temporary memory
* Now we have mimalloc editor-wide, we can remove FAnsiAllocator as its slow
* VT lightmaps are reduced from 32k back to 1-2k as huge single lightmaps hurt encoding performance seriously and 1-2k lightmaps should be adequate to reduce drawcalls
#preflight none
[CL 19905652 by Yujiang Wang in ue5-main branch]
Irradiance Caching
* Instead of setting a per-cell cap of samples, now we use the first X path samples of the receiver (lightmap texels) to adaptively distribute the irradiance cache samples. This will distribute them where BRDF sampling thinks the most important (more around corners and fewer in open area, for example). This is also the distribution that the old school irradiance caching's distance-based heuristics approximates for.
* New cache cells are only spawned during the first X passes. This avoids the case where the cache is constantly thrashed when it is not big enough to cover the scene.
* The image is reset after the first X passes are done. Like path guiding, these passes are uncached and thus contain high variance. Mixing them with the passes later will actually increase overall variance.
First Bounce Ray Guiding
* Now the FBRG passes run after IC passes are done. Way less input noise into the guiding PDF and better at locating importance sources.
New Parameter Tweaking Strategy for IC and FBRG
* IC: set quality to 1/16-1/8 of GI samples. Increase when seeing bright splotches around corners, or color discrepancies over large area.
* FBRE: set trial samples to 1/4 of GI samples. Increase when fireflies or small square-shaped artifacts are introduced by this technique.
General Cleanups
* IC and FBRG passes now add to the total number of passes to render instead of being subtracted from the number of GI Samples to reduce user confusion.
* IC buffer size reduction to save some GPU memory.
#rb juan.canada
#preflight 625ef3cb5f498a37c921b2f0
[CL 19815248 by Yujiang Wang in ue5-main branch]