Force SM6 for preview VK SM5, Mac SM5
Enable Lumen Support for Preview VK SM5, Mac SM5
Modifying FeatureLevelSwitch to respect the parent ShaderPlatform FeatureLevel and not the one set by preview in order to have consistent material logic with the Shader Platform we are trying to preview
#rb Jack.Porter, jeannoe.morissette
[CL 36758806 by florin pascu 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]
- Disable Niagara compute compilation if the shader platform does not support half floats
#rb dan.elksnitis, Jason.Nadro, Laura.Hermanns, rob.krajcarski
#jira UE-211613
[CL 32798790 by stu mckenna in ue5-main branch]
While the mobile team wants to keep independent samples disbaled for PCD3D_ES3_1, it makes sense to move this as a platform dependent feature into the DDSPI configuration.
#rb brian.white, christopher.waters, Yuriy.ODonnell
[FYI] Dmitriy.Dyomin, Carl.Lloyd
#rnx
[CL 31764896 by laura hermanns in ue5-main branch]
- Some static variables made it tricky, so added some support to make it simpler on users of the static variables
#rb David.Harvey
[CL 31431441 by josh adams in ue5-main branch]
Support wave size 64 lumen compute inline RT dispatches and enable by default on Android.
Allow use of wave ops as long as they are supported in fragment and compute shaders (Vulkan). Vulkan implementation on Android typically don't support it in vertex and geometry stage.
#jira UE-200580
#rb Krzysztof.Narkowicz
[CL 31103364 by florian penzkofer in ue5-main branch]
#rb charles.derousiers
[FYI] florin.pascu, henry.falconer, per.karefelt
#ushell-cherrypick of 30955220 by Charles.deRousiers
[CL 30955660 by charles derousiers in ue5-main branch]
- Added r.ParallelGatherDynamicMeshElements to control whether the feature is enabled. When disabled, tasks are constrained to the render thread as before.
- Added r.Visibility.DynamicMeshElements.NumTasks and r.Shadow.DynamicMeshElements.NumTasks which both default to 4. Thread contention becomes an issue at higher task counts for proxies which do a lot of uniform buffer or resource creation / updates.
Implementation Details:
The scene view visibility path typically has many dynamic elements per view, whereas there are typically more shadow views processing fewer elements each.
The main visibility path pushes dynamic primitives into a queue which is then processed by N async tasks, each with its own mesh collector and global vertex / index buffer. If a scene proxy is marked as not supporting parallel GDME, it is processed instead on the render thread in parallel with other async tasks. Niagara is currently the only proxy which is marked as unsupported by parallel GDME, as it has many potential sync points that would need to be untangled. When the async tasks complete, the task contexts are merged back to the view in an async task prior to launching dynamic mesh passes. Another important detail is that all material and GPU scene ops are deferred by the mesh collector and finalized at the end on the render thread. Deferring materials is necessary to allow the VT update task to overlap with GDME. The GPU scene updates are not thread safe and must be deferred.
The shadow path instead creates a queue of FProjectedShadowInfo's which is processed in parallel by async gather tasks (each with its own collector context). If a particular shadow has proxies that do not support parallel GDME, then a second pass is done over that FProjectedShadowInfo on the render thread to process the render thread only proxies. The dynamic mesh passes are launched asynchronously as well and are waited on by the shadow depth rendering passes later in the frame.
#rb krzysztof.narkowicz, christopher.waters
[CL 29289633 by zach bethel in ue5-main branch]