Converted a few additional RHICreateTexture2D calls to RHICreateTexture.
Adding a few more FRHITextureCreateDesc::CreateXXX variants to quickly specify extents and formats.
Merging FTextureRWBuffer2D and FTextureRWBuffer3D into a single class FTextureRWBuffer and deprecated the old ones.
#jira none
#rb luke.thatcher
#preflight 62448deb927e60e3415508e5
[CL 19560161 by christopher waters in ue5-main branch]
- Deprecated all the Create functions in FRHITextureDesc
- Added Create functions to FRDGTextureDesc which now derives from FRHITextureDesc instead of just being an alias
- FRHITextureCreateDesc can now be constructed functionally via SetXXX functions that return a reference to the FRHITextureCreateDesc
- Fixed a couple bad uses of FRHITexture*Desc types that should have been using FRDGTextureDesc
#jira none
#rb zach.bethel, luke.thatcher, mihnea.balta
#preflight 623df2e16d39f6b5a057299e
[CL 19516773 by christopher waters in ue5-main branch]
- New RHI command list SetTrackedAccess method for the user to supply a current whole-resource state.
- New RHI command context GetTrackedAccess method for querying the tracked access in RHIBeginTransitions / RHIEndTransitions on the RHI thread.
- Hooked RHICmdList.Transition and FRHICommandListExecutor::Transition to assign tracked state automatically.
- Refactored RDG and resource pools to use new RHI tracking.
- FRDGPooledBuffer / FRDGPooledTexture no longer contain tracked state. RDG temp-allocates state through the graph allocator instead.
- All prologue transitions are 'Unknown', and all epilogue transitions coalesce into a whole resource state.
- Implemented platform support for patching the 'before' state with the tracked state.
- Implemented various RHI validation checks:
- Asserts that the user assigned tracked state matches RHI validation tracked state, for all subresources.
- Asserts that tracked state is not assigned or queried from a parallel translation context.
- Added FRHIViewableResource and FRHIView base classes to RHI. FRHIView contains a pointer to an FRHIViewableResource. This is currently a raw pointer, but should be extended to a full reference in a later CL.
NOTE on RHI thread constraint:
Transition evaluation is now restricted to the RHI thread (i.e. no parallel translation contexts). Transitions aren't performed in parallel translate contexts anyway, so this is not a problem. If, however, we decide to refactor parallel translation to be more general, this implementation could be extended to track the state per context and update from the 'dispatch' thread.
#preflight 6233b4396666d7e753a16aaf
#rb kenzo.terelst
[CL 19513316 by zach bethel in ue5-main branch]
- Converted to RDG.
- Converted mobile to use subresource transitions instead of awkward ping-ponging between render targets.
- Merged duplicate code paths between mobile / desktop.
- Eliminated FReflectionScratchCubemaps singleton in favor of explicit resource marshalling.
#preflight 623cdecc573f51b292c9c84a
#rb christopher.waters
[CL 19513281 by zach bethel in ue5-main branch]
- The cvar `r.Material.DumpDDCKeys` has been renamed to `r.ShaderCompiler.DumpDDCKeys`.
- The directory they output to changed from "MaterialDDCKeys" to "ShaderDDCKeys"
- Break getting the global shader map DDC key string out into a function to make it easier to call when we dump DDC keys.
- Global Shader map section files are named "GlobalShaderMap-%s" where %s is the name of the section (usually a global shader type).
- Editor and Game shaders are dumped to separated directories.
- Expose ShouldDumpShaderDDCKeys() function so material code can see if dumping is enabled.
#rb Arciel.Rekman
#jira none
#preflight 623a4f1110251d53d57a1da7
[CL 19479594 by Jason Nadro in ue5-main branch]
This technique is guarded with by a projected settings. It is currently only supported on PC Dx12. This is the initial step for fine grain/per-pixel sorting.
#rb sebastien.hillaire
#jira none
#preflight 623a1884bc1cf2803867d8f8
[CL 19470340 by charles derousiers in ue5-main branch]
VSM in AncientGame campfire went from 4.64ms -> 3.41ms, Primary raster went from 1.34ms -> 1.07ms. Lumen raster 0.20ms -> 0.18ms. Much higher gains expected in content with high numbers of rasterizer bins (more overhead to remove using this optimization)
MedievalGame is even better: Primary raster 1.82ms -> 0.92ms, VSM 2.99ms -> 2.07ms, Lumen 0.43ms -> 0.19ms
#rb zach.bethel
#fyi ola.olsson, brian.karis, rune.stubbe
#preflight skip
#robomerge FNNC
[CL 19432065 by graham wihlidal in ue5-main branch]
- Can be enabled using r.RayTracing.Nanite.ProceduralPrimitive
- Currently uses a single AABB geometry for the whole mesh so can only support one material.
#preflight 6231fddbe2541b4ff3b188b2
#rb aleksander.netzel
[CL 19410198 by tiago costa in ue5-main branch]