This also implements r.Translucency.ScreenPercentage.Basis to experiment controling the translucency resolution independently from the primary screen percentage
#rb none
#jira UE-152560
#preflight 6294fbc4e61254772f5834a6
#ROBOMERGE-AUTHOR: guillaume.abadie
#ROBOMERGE-SOURCE: CL 20432059 via CL 20432067 via CL 20432069
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)
[CL 20434142 by guillaume abadie in ue5-main branch]
* 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]
InstancedStereoWidth is already a view property, but is currently simply set to the widest pair.
This CL properly computes InstancedStereoWidth for each pair individually.
#rb arciel.rekman
#jira UE-149773
#preflight 62608172dd47b4ad218b7584
#preflight 626094ba886befa9a5d09c6e
[CL 19841467 by Jules Blok in ue5-main branch]
* Added "BeginRenderingViewFamilies" render interface call that accepts multiple view families. Original "BeginRenderingViewFamily" falls through to this.
* FSceneRenderer modified to include an array of view families, plus an active view family and the Views for that family.
* Swap ViewFamily to ActiveViewFamily.
* Swap Views array from TArray<FViewInfo> to TArrayView<FViewInfo>, including where the Views array is passed to functions.
* FSceneRenderer iterates over the view families, rendering each one at a time, as separate render graph executions.
* Some frame setup and cleanup logic outside the render graph runs once.
* Moved stateful FSceneRenderer members to FViewFamilyInfo, to preserve existing one-at-a-time view family rendering behavior.
* Display Cluster (Virtual Production) uses new API.
Next step will push everything into one render graph, which requires handling per-family external resources and cleaning up singletons (like FSceneTextures and FSceneTexturesConfig). Once that's done, we'll be in a position to further interleave rendering, properly handle once per frame work, and solve artifacts in various systems.
#jira none
#rnx
#rb zach.bethel
#preflight 625df821b21bb49791d377c9
[CL 19813996 by jason hoerner 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]
* When enabled, translucent surfaces are rasterized again to create a minimal translucency GBuffer, using depth writes and tests to only capture the frontmost layer
* Lumen Reflections are run on the translucency GBuffer, without denoising to reduce overhead (forced to mirror)
* Finally the translucent base pass depth-tests against the frontmost layer depth and applies the high quality reflections. Subsequent layers continue to use the Radiance Cache based reflections.
* Disabled by default due the constant overheads when any translucent surface is on-screen
* New Post Process Volume and Project setting to enable
#ROBOMERGE-AUTHOR: daniel.wright
#ROBOMERGE-SOURCE: CL 19387917 via CL 19387985
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)
[CL 19391295 by daniel wright in ue5-main branch]
This was caused by an empty TranslucencyViewResourcesMap in the post-processor. To fix it we allow more of the code path to execute before we skip rendering the second view.
#jira UE-143813
#preflight 621d434946449008c9b59787
#rb arciel.rekman
#rb guillaume.abadie
#ROBOMERGE-AUTHOR: jules.blok
#ROBOMERGE-SOURCE: CL 19205877 in //UE5/Release-5.0/... via CL 19209437
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19215613 by jules blok in ue5-main branch]
It works but it does not account for alliasing. It is literally impossible to know if users want to expend stencil bit erode.
#rb none
#preflight 621e35fff1206ae3ea5a66a6
[CL 19198466 by Sebastien Hillaire in ue5-main branch]
Fixed Ray Tracing Scene overhead when the project is set to use Lumen GI but Lumen is disabled by scalabilty
Grey out Dynamic GI Method and Reflection Method when the project uses Forward Shading
#preflight 6216fce37a51a1466493323f
#jira UE-141840
#rb Krzysztof.Narkowicz
#lockdown Juan.Canada
#ROBOMERGE-AUTHOR: daniel.wright
#ROBOMERGE-SOURCE: CL 19120562 in //UE5/Release-5.0/... via CL 19121408
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19153987 by daniel wright in ue5-main branch]
Submitted on behalf of fred.kimberley
#rb andy.davidson
#preflight 61f8700e41414fb013dd4002
#ROBOMERGE-AUTHOR: andrew.davidson
#ROBOMERGE-SOURCE: CL 18801433 in //UE5/Release-5.0/... via CL 18802090 via CL 18821511
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)
[CL 18821594 by andrew davidson in ue5-main branch]
- Deprecated legacy members from FPooledRenderTargetDesc.
- Deprecated ETextureRenderTarget and removed from RDG.
- TargetableTexture always equals ShaderResourceTexture.
- Simplified render target pool FindFreeElement.
- Create pooled buffers and textures with a known state.
#rb graham.wihlidal
#preflight 61f8488568795b2f45852274
#ROBOMERGE-AUTHOR: zach.bethel
#ROBOMERGE-SOURCE: CL 18796880 in //UE5/Release-5.0/... via CL 18797840 via CL 18799070
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)
[CL 18799188 by zach bethel in ue5-main branch]