A small first step towards customizing the RayTracingPipeline for path tracing. As a first step, I am building the pipeline with just the path tracing related raygen shaders in it (and removing the path tracing raygen shader from the regular RT pipeline). I removed the miss shader for lighting from the path tracer's pipeline since its not used there.
Other minor refactors include consolidating the ray tracing related cached command logic and simplifying the RT command storage to avoid a verbose indirection.
#rb Yuriy.ODonnell
[CL 16160139 by chris kulla in ue5-main branch]
Substitutes the software voxel-tracing TraceFromProbesCS() shader with hardware, ray-tracing instead. The algorithm first dispatches a large wavefront of rays and writes intermediary data to temporary storage. The second pass writes from temporary storage into the resultant radiance probe atlas. The two-pass algorithm is necessary because downsampling cannot easily occur within a ray-generation shader, since it cannot use groupshared or wave intrinsics easily.
[CL 16120037 by Patrick Kelly in ue5-main branch]
This fixes a crash due to a null ray tracing pipeline when path tracing is enabled at startup.
#rb Yuriy.ODonnell
[CL 16093778 by chris kulla in ue5-main branch]
Added ERayTracingInstanceFlags, which covers all equivalent DXR functionality. Explicitly specified that FRayTracingGeometryInstance.NumTransforms is what defines how many elements will be read from CPU or GPU transform buffers (which may themselves be larger). Added FRayTracingGeometryInstance.CommonUserData that's used if UserData array view is empty. Otherwise UserData must have at least as many elements as NumTransforms.
Also fix System.Renderer.RayTracing.BasicRayTracing failure, as a side-effect.
#rb Juan.Canada
[CL 16072216 by Yuriy ODonnell in ue5-main branch]
- change Nanite debug mode flag such that any debug flag implicitly turns on debug mode.
#jira UETOP-1088
#rb graham.wihlidal, andrew.lauritzen
#lockdown graham.wihlidal
[FYI] nick.whiting
#ROBOMERGE-SOURCE: CL 16055250 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v789-15992632)
[CL 16061072 by ola olsson in ue5-main branch]
Surface cache is now stored as virtual allocations, which can be backed up by a physical allocation. Physical allocations are either full mapped pages or a sub-allocation from a page (using bin allocator). In order to conserve virtual memory, every card has sparse mips maps, where only specific mipmap levels can be allocated in virtual memory. Lumen scene visualization and hardware ray traced reflections generate feedback requests. Requests are then merged on the GPU, downloaded to CPU, and used to capture higher quality pages. All card atlas operations (e.g. lighting or radiosity) are now done with page granularity.
Some misc changes:
* Split Lumen into more files
* Lumen scene visualization cone angle is now capped based on the distance between pixels
* Lumen is now doing less captures, as card resolution is snapped based on the largest extent
* Merged all "UploadEveryFrame" cvars into r.LumenScene.UploadEveryFrame
* Fixed r.LumenScene.Reset to also clear lighting in the atlas
* Replaced ClearAtlasRDG with system AddClearRenderTargetPass
* Removed LumenLocalSceneGeneration (replaced by r.LumenScene.Reset 1)
* r.LumenScene.DumpStats 1 now writes out lots of stats about atlas fragmentation
[CL 15967280 by Krzysztof Narkowicz in ue5-main branch]
This CL:
* Move hair strands data onto the scene rather than a global manager
* Move registration/unregistration onto the proxy resources creation/deletion
* Change instance resources to defer their deletion so that resources used by proxies are valid until the proxy are released.
#rb none
#jira FROST-1658
#ROBOMERGE-OWNER: charles.derousiers
#ROBOMERGE-AUTHOR: charles.derousiers
#ROBOMERGE-SOURCE: CL 15915567 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)
#ROBOMERGE-CONFLICT from-shelf
[CL 15920095 by charles derousiers in ue5-main branch]
- Added FRayTracingScene member to FScene.
- Removed ray tracing scene resources from FViewInfo.
#rb Yujiang.Wang, Juan.Canada
[CL 15873901 by Yuriy ODonnell in ue5-main branch]
Next will be to have buffers also be RDG transient buffers (and that should fix the last transition issue).
Tested strata enabled and disabled with rhivalidation.
#rb none
#fyi charles.derousiers
[CL 15858691 by Sebastien Hillaire in ue5-main branch]