This special Mie/Ray only luts are only generated if nedeed (start distance are not 0 on the cloud ocmponent).
Measured on console with some cloud material
Off
- CameraVolumeLUT 0.08 ms
- Some Cloud Tracing 4.39 ms
On
- CameraVolumeLUT 0.09 ms
- Some Cloud Tracing 4.40 ms
=> Almost no impact on CameraVolumeLUT compute
=> cost of luts sampling when tracing material seems hiden in the tracing/marching cost noise.
=> More memory used in game: double buffered ray/mie rgba fp16 volumes are 2*2*(32*32*16)*4*2 = 512KB)
#preflight https://horde.devtools.epicgames.com/job/6357d631ae33b04ec12fc07f
#preflight https://horde.devtools.epicgames.com/job/63580224e456a68082adc4dc
#rb Jian.Ru, Ben.Woodhouse
#ushell-cherrypick of 22747354 by Sebastien.Hillaire
#ushell-cherrypick of 22749809 by Sebastien.Hillaire
[CL 22861302 by sebastien hillaire in ue5-main branch]
- default textures and UAV are now allocated only once (preventing some fast clear barriers)
- When render into a cubemap texture, a special UAV can be use if specified from the caller on the ClourRenderContext.
#rb Ben.Woodhouse, Jian.Ru
#preflight https://horde.devtools.epicgames.com/job/6348277f57048bdb82b43982
[CL 22515325 by sebastien hillaire in ue5-main branch]
The main issue was that the render target index was being changed between viewfamilies of different GPUs in the same frame.
There was a secondary issue related to the skycloud substeps, when SkyCloudCubeFacePerFrame is less than the default of 6 faces per frame, because the substep was being incremented between viewfamilies of different GPUs in the same frame.
We now keep track of which GPUs have a full cube map generated, to ensure that they all get it at least once since time slicing is enabled.
We also keep track of the GPUs processed each frame and avoid repeating the calculations for multiple view families in the same GPU.
#jira UE-165615
#rb sebastien.hillaire
#preflight 633da7bd0c2d12a85830efb0
#lockdown alejandro.arango
[CL 22393907 by alejandro arango in ue5-main branch]
- MeshPassProcessor create function takes feature level as create parameter
- MeshPassProcessor base stores the processor enum type (handy for reference and stat tracking per pass type)
When pass enum value is not available then EMeshPassType::Num is used for now
#jira UE-139584
#rb Jason.Nadro, Mihnea.Balta, Zach.Bethel, Arciel.Rekman
#preflight 631b30f1304480f8f89fca35
[CL 21987972 by kenzo terelst in ue5-main branch]
#ROBOMERGE-AUTHOR: daniel.wright
#ROBOMERGE-SOURCE: CL 21067098 via CL 21067477 via CL 21067487
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21078523 by daniel wright in ue5-main branch]
The refactor to get rid of the FSceneTextures and FSceneTexturesConfig global singletons has also been preserved. The FViewFamilyInfo is used to hold those structures, so client facing API functions that lack a scene renderer reference can still pull the FSceneTextures[Config] from the view family pointer. All other scene renderer state has been moved from FViewFamilyInfo back into FSceneRenderer.
#jira none
#rnx
#rb ola.olsson krzysztof.narkowicz zach.bethel
#preflight 629f770e233ae0a8f8fb7f2e
[CL 20540730 by jason hoerner in ue5-main branch]
The code was never allocating the second sky render target because it was using the wrong index in the null check (ConvolvedSkyRenderTargetReadyIndex is 0 at that point).
#jira UE-149630
#rnx
#lockdown Michal.Valient
#preflight https://horde.devtools.epicgames.com/job/628f8239e17a02240dd06378
#rb Jason.Hoerner
#ROBOMERGE-AUTHOR: mihnea.balta
#ROBOMERGE-SOURCE: CL 20379597 in //UE5/Release-5.0/... via CL 20381835
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)
[CL 20385099 by mihnea balta in ue5-main branch]
- Refactord 'Finalized Access' feature into a more flexible 'External' vs. 'Internal' access mode per resource toggle.
- Resources can transition between modes multiple times within the graph.
- Supports async compute pipeline.
- Supports queueing of requests to avoid back-to-back helper passes.
- This feature is needed to support conversion of GPU scene buffers.
- Deprecated the ReadOnly and ForceTracking resource flags and added a 'SkipTracking' flag instead.
- Previous semantics were confusing and error prone.
- New model requires a manual flag to tell RDG never to transition a resource.
- This flag is used for read-only dummy resources as an optimization.
- Renamed some of the auxiliary 'FinalizedResource' utilities since the name no longer matches the semantics.
#preflight 6266cc6d0634d0904ce4ba46
[CL 19904734 by zach bethel 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]
* 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]
Configurable real time capture with respect to cost/latency: sky and cloud captures can be timesliced per face now.
Fixed potential issue in deprecated SetXXX fucntions.
Removed advanced tag from sample count because those are too important to hide by default.
#rb Daniel.Wright
#preflight 62206f4537049be5174a1215
[CL 19239678 by Sebastien Hillaire in ue5-main branch]
#jira UE-122078
#rb Andrew.Davidson, Colin.McGinley
#preflight standard build
#ROBOMERGE-AUTHOR: fred.kimberley
#ROBOMERGE-SOURCE: CL 18817999 in //UE5/Release-5.0/... via CL 18818012 via CL 18822871
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18824721 by fred kimberley in ue5-main branch]