Save up to 16MB on some platforms.
#rb daniele.vettorel, danny.couture, Kenzo.Terelst
#tests 66d8b4154a47dde1dd226334
#ushell-cherrypick of 36036431 by serge.bernier (first of 2 submits)
[CL 36747837 by serge bernier in 5.5 branch]
[FYI] erica.stella
Original CL Desc
-----------------------------------------------------------------
Added movable point lights dynamic shadows in mobile forward renderer
#jira UE-211646
#rb Dmitriy.Dyomin, Florin.Pascu
[CL 35974859 by bob tellez in ue5-main branch]
- moved ownership of RayTracingGeometry from FStaticMeshLODResources to FStaticMeshRayTracingProxyLOD so offline data can be streamed-in when ray tracing is toggled on.
- request streaming of ray tracing geometry when it is initally registered or FirstLODIndex changes.
- moved call to ProcessCompletedStreamingRequests(...) so it in every code path of FRayTracingGeometryManager::Tick(...)
- enabled r.RayTracing.EnableOnDemand by default on all platforms.
#rb aleksander.netzel
[CL 34416694 by tiago costa in ue5-main branch]
- disable r.DynamicRes.DynamicFrameTime by default and only enable on Windows to maintain same behaviour.
#rb Guillaume.Abadie
[CL 34104175 by tiago costa in ue5-main branch]
- D3D12 PC Bindless needs descriptor heaps managed on the CPU; we cannot update them on the GPU timeline.
- Each context now has a FD3D12ContextBindlessState that contains the per-context GPU descriptor heap as well as descriptor rollbacks to apply to the heap before submission.
- We have to roll descriptors back to their values before the incoming view updates were applied so that we can leverage the CPU heap copy at all times. This isn't deferring the updates; it's storing the values before the updates and making sure the heap is used with those values.
- When a context encounters a draw/dispatch and there were any descriptor updates, the previously used heap is updated with the correct set of descriptors before a new heap is created for the subsequent draws/dispatches.
Additional changes
- Allowing RHIs to override FRHITextureReference for custom bindless implementations.
- Adding FRHIDescriptorAllocator::GetAllocatedRange to allow managers to find the smallest range of descriptors that need to be copied to new heaps.
- DescriptorCache now holds reference counted pointers to the bindless heaps to avoid potential use after free scenarios.
- Adding ED3D12DescriptorHeapFlags to mirror D3D12_DESCRIPTOR_HEAP_FLAGS while adding new flags.
- Adding ability to pool descriptor heaps to avoid high OS overhead when constantly allocating new ones.
- Pooling descriptor heaps required more descriptor heap managers to implement CleanupResources.
#jira UE-162014
#rb Luke.Thatcher
[CL 30183702 by christopher waters in ue5-main branch]
r.ShaderPipelines
r.Material.ExcludeNonPipelinedShaders
Both cvars are currently disable on WindowsEngine.ini which make them also disable when we cook for consoles. ExcludeNonPipelinedShaderTypes is currently used only at cooking time when we compile shaders which is currently returning false, since the value is disabled on windows. Making those cvars use FShaderPlatformCachedIniValue, will allow to have specific platform value when cooking for a specific target. Moving r.Material.ExcludeNonPipelinedShaders to the defaultengine.ini file to keep it disable for the moment and not affecting shader key string. Will enable it progressively on console later.
r.Shaders.RemoveUnusedInterpolators
Make that cvar platform agnostic, since it will be used in on other consoles eventually. Platforms supporting the stripping of unused interpolators will check the same flag (CFLAG_ForceRemoveUnusedInterpolators) to enable it. Since windows can run opengl, and stripping is not supported on that shader platform, add extra logic to exclude the flag.
-Make the RHISupportsShaderPipelines function access a real DDPI attribute and not just test if we are not on mobile. Will need this to be able to have stripping unused shader interpolators on Switch.
[REVIEW] Laura.Hermanns
[CL 26018371 by serge bernier in ue5-main branch]
* The CVar can't be used to enable bindless resources per platform
#rb christopher.waters
#preflight skip
[CL 23912269 by Yuriy ODonnell in ue5-main branch]
* The non-bindless code path is planned to be deprecated in the future engine release
#rb christopher.waters
#jira UE-171919
#preflight skip
[CL 23894521 by Yuriy ODonnell in ue5-main branch]
#jira UE-159832
#rb Aaron.mcleran Phil.Popp Dan.Thompson Josh.Adams
#preflight 62d260033c3df323907eaa93
[CL 21153330 by jimmy smith in ue5-main branch]
- Add r.Shadow.DetectVertexShaderLayerAtRuntime to make it possible to force (for DX11/12/SM5/Vulkan) compilation of vslayer despite RHISupportsVertexShaderLayer being false.
- Set r.Shadow.DetectVertexShaderLayerAtRuntime in WindowsEngine.ini,WinGDKEngine.ini & LinuxEngine.ini.
- Add DoesRuntimeSupportOnePassPointLightShadows to determine support at runtime.
- Fix bug excluding Nanite meshes from DF shadows for local lights if VSM is enabled (now only affects directional lights).
- Add OnGetOnScreenMessages to enable modular generation of on-screen messages in the scene renderer (aimed at transient rendering processes).
#rb arciel.rekman,andrew.lauritzen
#jira UE-138933
#preflight 61f3c967da54035207f6e560
#ROBOMERGE-AUTHOR: ola.olsson
#ROBOMERGE-SOURCE: CL 18769670 in //UE5/Release-5.0/... via CL 18769671 via CL 18769765
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18769767 by ola olsson in ue5-main branch]
fix a validation error on shutdown
#jira none
#rb none
#ROBOMERGE-SOURCE: CL 12232777 in //UE4/Release-4.25/... via CL 12232780
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v664-12234175)
[CL 12234783 by jonas meyer in Main branch]
- Enabled on Windows and Linux(-like) platforms only, Android behavior should be unchaged.
- Perf testing inconclusive, from slight improvement to lower dips in the FPS. The main goal is correctness though.
#rb Rolando.Caloca, Dmitriy.Dyomin, Jonas.Meyer
[FYI] Rolando.Caloca, Jonas.Meyer, Dmitriy.Dyomin, Michael.Sartain, Brandon.Schaefer
#jira originally UE-86149
#ROBOMERGE-SOURCE: CL 12025149 in //UE4/Release-4.25/... via CL 12025157
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 12025188 by arciel rekman in Main branch]