- 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
[CL 16925941 by zach bethel in ue5-main branch]
FPreloadShaderTask takes the ShaderPreloadLock in FShaderCodeArchive::OnShaderPreloadFinished() and then issues an async read. Another task can be picked up by the thread while waiting on that read. If that new task is also a FPreloadShaderTask it will try to aquire the ShaderPreloadLock again and deadlock.
Introduce an EnsureReadNonBlocking method to IMemoryReadStream which can be called outside the lock to ensure the data is ready. We can then lock and copy out the data without incuring a wait and the potential for another FPreloadShaderTask being run while we hold the lock.
#rb Ben.Ingram, Michal.Valient
#ROBOMERGE-SOURCE: CL 16917416
#ROBOMERGE-BOT: (v836-16769935)
[CL 16924675 by eric mcdaniel in ue5-main branch]
- Also, include this in the DDC key.
#rb Kevin.Ortegren
#review-16868749 @Jason.Nadro
#jira UE-117881
[CL 16897479 by Arciel Rekman in ue5-main branch]
useful for RVT on mobile platforms, to save the cost of runtime compression
#rb Dmitriy.Dyomin mihnea.balta
[CL 16872220 by yangke li in ue5-main branch]
- Refactored RDG to support free-threaded execution of passes.
- Refactored renderer to use specific RHI command list variants in pass lambda. Immediate command list passes are forced to stay on the render thread, while other variants can be parallelized.
#rb christopher.waters
[CL 16838717 by zach bethel in ue5-main branch]
Renamed FDataDrivenPlatformInfo::AudioCompressionSettingsIniSectionName to TargetSettingsIniSectionName. It's now used to populate PlatformMask at runtime, to make sure that it matches between cook and runtime. Before it was possible to cook with e.g. GRayTracingPlaformMask=0, but then the cooked game would run with GRayTracingPlaformMask=1.
#rb Patrick.Kelly
[FYI] Patrick.Kelly, Daniel.Wright, Josh.Adams
#ROBOMERGE-OWNER: krzysztof.narkowicz
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 16825469
#ROBOMERGE-BOT: (v836-16769935)
#ROBOMERGE-CONFLICT from-shelf
[CL 16825718 by krzysztof narkowicz in ue5-main branch]
- Uses the InstanceCullingLoadBalancer to pre-distribute the work on the CPU to ensure even load.
- Make instance culling use the instance data offset in MDC instead of translating primitive IDs.
- Track single-instance draws separately from instanced to optimize handling (disable culling for single-instance primitives).
#rb Graham.wihlidal,andrew.lauritzen
#fyi dmitriy.dyomin
#preflight 60d0eafa2ab2180001269160
[CL 16733827 by Ola Olsson in ue5-main branch]
2. Add an option to use high quality BRDF on mobile as the same with PC.
3. Fallback to default light shading model if it is not supported on mobile.
4. Use EnvBrdf for mobile deferred lighting pass.
#jira none
#rb Dmitriy.Dyomin
#preflight 60cdef32be81e8000118d85c
[CL 16722349 by Wei Liu in ue5-main branch]