* Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime.
* I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected.
#jira NONE
#rb chris.kulla zach.bethel mihnea.balta
#preflight 6261aca76119a1a496bd2644
[CL 19873983 by jason hoerner in ue5-main branch]
-SceneTextures.cpp was using module lookup functions in the render thread that are only safe to use without locking on the game thread. However we don't want to lock these every frame. So I have added an accessor for this information to IStereoRendering.h and cached the values in the oculus HMD implementation that uses it but did not already have the value cached in the hmd. This cached value can be safely read on any thread.
#review-19621457
#rb Jules.Blok Robert.Srinivasiah
#preflight 624f446f8a43273c43f570f7
[CL 19680731 by Jeff Fisher in ue5-main branch]
3 fixes:
* Fixes the GRHISupportsVariableRateShading logic to ensure that bool doesn't get nuked if the device supports FragmentDensityMap but not ShadingRateAttachment.
* Ensures Scene Textures are created as an array when multiview enabled.
* Ensures the RenderPass2 impl supports the Multiview Mask.
#jira UE-131846
#rb steve.smith jeannoe.morissette
#ROBOMERGE-AUTHOR: steve.smith
#ROBOMERGE-SOURCE: CL 17864739 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v883-17842818)
[CL 17864759 by tuxerr in ue5-release-engine-test branch]
- Added ERDGBuilderFlags::AllowParallelExecute to tag specific builders to attempt parallel execution. This avoids cases where small graphs fork tasks and end up causing contention. Only the main scene render graphs are tagged.
- Moved RHI transition creation to an async task.
- Moved parallel execute setup and dispatch to an async task.
- Fixed RDG draining asserts using a short-term workaround by tagging relevant scene textures as non-transient.
- Deprecated RDG AddPass utilities without names and fixed up last remnants.
- Enabled parallel RDG execution by default.
[FYI] christopher.waters
#ROBOMERGE-SOURCE: CL 16925941 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16925957 by zach bethel in ue5-release-engine-test branch]
2. Enable mobile AO and PPR on highend mobile devices
#jira UE-119101
#8178
#rb Dmitriy.Dyomin
#ROBOMERGE-SOURCE: CL 16906590 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16906591 by wei liu in ue5-release-engine-test branch]
For Forward ES31
Default SceneColor RG11B10 + R16F\32F Depth texture
With PropagateAlpha on RGBA16F + R16F\32F
PostProcess we sample SceneDepthAux for Depth
For Deferred ES31
SceneDepthAux only for Metal
PropagateAlpha not working yet
PostProcess we sample SceneDepthTexture for Depth
cvar to change Depth texture from 16 to 32Fr.Mobile.SceneDepthAux
cvar for AlphaPropagate r.Mobile.PropagateAlpha
#jira UE-98033
#rb Dmitriy.Dyomin, Carl.Lloyd, Jack.Porter
#ROBOMERGE-SOURCE: CL 16644095 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v833-16641396)
[CL 16644108 by florin pascu in ue5-release-engine-test branch]
- New Drain() method on FRDGBuilder; will flush all pending work.
- Drained passes are not culled; resource lifetimes are extended; async compute fences are optimized as best as possible but fence joining may occur after the drain.
- Batch up and pre-build all resource transitions. This is a prerequisite for parallel command lists.
- Removed ServiceLocalQueue passes with built-in RDG AddDispatchHint().
#jira UE-114622
[CL 16393495 by zach bethel in ue5-main branch]