Increasing the LUT resolution can become necessary to mitigate precision artifacts with wide-gamut working color spaces.
#jira UE-170301
#rb benjamin.rouveyrol, guillaume.abadie
#preflight 63696783843e6ac794811b27
[CL 23175071 by eric renaudhoude in ue5-main branch]
Should be useful for debugging whether SVT is giving same result as RVT.
#localization none
#tests local
[FYI] jordan.walker
[CL 23172510 by jeremy moore in ue5-main branch]
- Nanite::FRayTracingManager expects builds to be processed in the same frame their scheduled since it also impacts GPUScene updates.
#rb aleksander.netzel
#preflight 6374c9770c74adb48be7ccd2
#jira IRON-328
[CL 23153900 by tiago costa in ue5-main branch]
Cost is .03ms on 2080TI at 1080p
Fixed Lumen Reflection Screen Traces outputting too far of a distance when fading out at the edges of the screen
Added r.AOGlobalDistanceFieldForceUpdateOnce to allow working around Mesh SDF streaming latency
[CL 23147835 by daniel wright in ue5-main branch]
Instead of a binary r.Lumen.Reflections.Foliage, use r.Lumen.MaxRoughnessToTraceForFoliage cutoff.This allows to skip reflections rays on foliage, but still trace those from very smooth ice surfaces.
[REVIEW] [at]daniel.wright
#rb Daniel.Wright
[FYI] Ben.Woodhouse
#localization none
#tests PC_editor_and_PS5_replay
[CL 23147830 by krzysztof narkowicz in ue5-main branch]
- this fixes a number of crashes and issue with heightfields missing from global distance field when heightfield shadows are enabled.
- Context:
- Heightfields are used by two techniques using different approaches:
- Global Distance Field (r.AOGlobalDistanceField.Heightfield) - heightfields are composed one by one into Global SDF so there's no need for bindless resources or atlas.
- Height Field Shadows (r.HeightFieldShadowing) - since all heightfields data must be accessible in the same dispatch, heightfields descriptiors are stored in structured buffers (HeightFieldObjectBuffers) and textures are copied to an atlas (GHeightFieldTextureAtlas/GHFVisibilityTextureAtlas).
- FDistanceFieldSceneData::HeightfieldPrimitives is an array of relevant heighfield primitives.
- For each primitive, DistanceFieldInstanceIndices contains the index of the corresponding entry in HeightfieldPrimitives array.
- The same DistanceFieldInstanceIndices is also used to manage distance fields (there's an assumption that a primitive can have a distance field or a height field, but not both).
- The codepath to manage the HeightFieldObjectBuffers and GHeightFieldTextureAtlas/GHFVisibilityTextureAtlas is only enabled when ShouldPrepareHeightFieldScene() returns true.
- There's limited space in the atlas so it's not guaranteed that every loaded heightfield fits in the atlas.
- Issues with existing approach:
- When the codepath to manage HeightFieldObjectBuffers/Atlases is enabled, only the heighfields that fit in the atlas are added to FDistanceFieldSceneData::HeightfieldPrimitives.
- this means that in some cases not every loaded heighfield will be composed into the global distance field (since only primitives in HeightfieldPrimitives are included).
- there are also a few bugs with the code that can result in crashes.
- Heighfields that fail the inital allocation are not added to HeightfieldPrimitives even after space becomes available in the atlas.
- the atlas itself correctly retries to fit failed allocations when space becomes available, however the higher level managment code doesn't handle this.
- Changes:
- all heightfield primitives are added to FDistanceFieldSceneData::HeightfieldPrimitives regardless of whether they fit in atlas or not.
- this way all heightfields will be included in global distance field
- added a new field, bInAtlas, to entries in HeightFieldObjectBuffers.
- during Height Field Shadows culling pass, heightfields not present in atlas are skipped.
- significantly refactored relevant codepaths to simplify logic.
#rb Krzysztof.Narkowicz, Jian.Ru
#preflight 6372c0ef953c19d4353ad211
[CL 23131399 by tiago costa in ue5-main branch]
* Adding forward declarations
* Adding "inline" in front of const/constexpr variables in headers
* Adding includes
* A few moves of ctor/dtor to cpp file
#preflight 6372b3ac0c74adb48b49f313
#rb none
[CL 23130896 by henrik karlsson in ue5-main branch]
* Add FRayTracingGeometry::EGeometryStateFlags for tracking the state instead of several bools:
- Add new state for tracking if the geometry was streamed in - its primary use is for dynamic ray tracing.
- When ray tracing is toggled on at runtime we only recreate geometries that were marked as streamed in.
* Streamed geometries have to be created in a different way than regular geometries:
- Creating geometry with StreamingDestination type will not allocate any memory for BLAS buffers.
- Those can only be initialized by InitRHIForStreaming from temporary geometry with a StreamingSource type
- Added FRayTracingGeometry::InitRHIForDynamicRayTracing() to handle both StreamingDestination and Rendering
- For StreamingDestination it will do similar steps as normal mesh streaming does.
* Add missing RayTracingGeometry initialization when dynamic ray tracing was enabled but ray tracing was disabled.
#rb tiago.costa, yuriy.odonnell
#preflight 6372245ebf76990b71f5d021
[CL 23116977 by aleksander netzel in ue5-main branch]
- Otherwise they can end up overwriting InstanceMask/Flags.
- Also assert when setting up instance descriptors on CPU.
#rb yuriy.odonnell
#preflight skip
[CL 23116659 by tiago costa in ue5-main branch]
- issue
- GPU hangs can be encountered when Lumen gathers no lights on a frame
- InitializeLightTileIndirectArgs pass calculates group size off gathered light count
- without gathered lights we get a group size of (0, 1, 1) which will not run any threads and hence will not populate the indirect args for the following passes
- as we do not clear the indirect arg UAVs, this results in unitialized values for the indirect args of following passes
- fix
- ensure a minimum group size of 1 for the InitializeLightTileIndirectArgs pass which will properly initialize the indirect args of the following passes
#rb Krzysztof.Narkowicz
#preflight 636f310032484253057be4c0
[CL 23113476 by eric mcdaniel in ue5-main branch]