132 Commits

Author SHA1 Message Date
josh adams
590eec55e5 - Moved all versions from *SDK.Versions.cs files to *_SDK.json files
- Some static variables made it tricky, so added some support to make it simpler on users of the static variables
#rb David.Harvey

[CL 31431760 by josh adams in 5.4 branch]
2024-02-13 12:00:42 -05:00
dmytro ivanov
36bf71d423 Enable using NDK 26.2.x
#jira UE-206659
#rb Chris.Babcock

[CL 31426986 by dmytro ivanov in 5.4 branch]
2024-02-13 10:17:42 -05:00
henry falconer
cd2fdb375d Disable hair binding on mobile, as it fails an assert due to a missing SRV on the target mesh
#rb Charles.deRousiers

#changelist validated
#virtualized

[CL 31214840 by henry falconer in 5.4 branch]
2024-02-06 10:41:14 -05:00
dmytro ivanov
58437300a9 Add support for HWAsan in NDK 26
#jira UE-205585
#rb dmytro.vovk

[CL 31122611 by dmytro ivanov in 5.4 branch]
2024-02-02 09:30:15 -05:00
florian penzkofer
406f4da360 Lumen on Android performance improvements
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 31103399 by florian penzkofer in 5.4 branch]
2024-02-01 16:39:47 -05:00
charles derousiers
d408217cd3 Add hair cards/meshes binding & deformation support for mobile renderer.
#rb charles.derousiers
[FYI] florin.pascu, henry.falconer, per.karefelt

#ushell-cherrypick of 30955220 by Charles.deRousiers

[CL 30955839 by charles derousiers in 5.4 branch]
2024-01-27 11:30:01 -05:00
allan bentham
2dc81d3644 Android: Set max allowed NDK version to 26.
#rb chris.babcock
[FYI] chris.babcock

[CL 29804018 by allan bentham in ue5-main branch]
2023-11-17 05:38:49 -05:00
dmitriy dyomin
21ed8ecb18 Added Android static feature level and platform info
#rb jack.porter

[CL 29706762 by dmitriy dyomin in ue5-main branch]
2023-11-14 00:30:11 -05:00
tuo chen
d15933ed78 Add mobile lens flare pass
#rb Dmitriy.Dyomin
#jira UE-199859
#fyi Jack.Porter

[CL 29590352 by tuo chen in ue5-main branch]
2023-11-09 01:49:15 -05:00
zach bethel
391eaf38cf Implemented parallel Gather Dynamic Mesh Elements (GDME) for visibility and shadows.
- 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]
2023-10-31 16:36:46 -04:00
florian penzkofer
cd93ccdb8b Support ThinTranslucent Materials in mobile renderer
OpenGL ES and Metal use framebuffer fetch.
Vulkan uses dual source blending.
For Vulkan and OpenGL ES there is a fallback shader permutation for drivers that don't support this. The fallback is the same as the existing solution that uses regular blending (i.e. looks different).
Others uses dual source blending and we force use of DXC for those shaders.
#rb Dmitriy.Dyomin, Florin.Pascu

[CL 29245271 by florian penzkofer in ue5-main branch]
2023-10-30 15:41:46 -04:00
tiago costa
354a46216d Disable r.ContactShadows on mobile platforms by default.
#rb Florin.Pascu

[CL 28279808 by tiago costa in ue5-main branch]
2023-09-27 13:12:32 -04:00
charles derousiers
9707f945c6 Set closure count to 1 by default on all low end platforms.
#rb none
[FYI] sebastien.hillaire

[CL 27965924 by charles derousiers in ue5-main branch]
2023-09-18 13:42:05 -04:00
charles derousiers
a203fd7037 Make Glint/SpecularLUT/SheenQuality be set per platform.
#rb none
[FYI] sebastien.hillaire

[CL 27947302 by charles derousiers in ue5-main branch]
2023-09-16 22:04:52 -04:00
erica stella
cc83ec481c Add bSupportsVariableRateShading to Android DDPI.
#rb christopher.fiala

[CL 26635588 by erica stella in ue5-main branch]
2023-07-27 06:12:15 -04:00
marc audy
1b8e7f29c4 Rework GPUScene support on mobile platforms.
Platforms that do support uniform buffer objects can now provide batched primitive data through UBO. There is a limit UBO range that can be accessed in shaders, so we group instances into batches that fit into this limit. Switch uses 64KB views, other platfroms16KB views. For each primitive we allocate 512Bytes and 256Bytes for instance. Mobile platforms that do not support UBO will use a desktop version of GPUScene.
There are a few things that still missing: Dynamic mesh passes,  static lighting
#rb ola.olsson, benjamin.rouveyrol

[CL 26354848 by marc audy in ue5-main branch]
2023-06-30 16:34:38 -04:00
yuriy odonnell
b67c4cb749 Add bSupportsVertexShaderSRVs to DataDrivenShaderPlatformInfo which drives PLATFORM_SUPPORTS_VERTEX_SHADER_SRVS shader
* This should be used to guard any features that require explicitly accessing buffer or textures SRVs in vertex shaders

#rb Dmitriy.Dyomin
#rb Kenzo.Terelst

[CL 26207274 by yuriy odonnell in ue5-main branch]
2023-06-23 05:56:06 -04:00
josh adams
305c260069 - Moved SDK versions (MainVersion and Min/Max SDK version) from C# strings to SDK.json files in the Platform's Config folder
- Allow for per-project override in a project's platform's config folder (this is merging with my other work on per-project SDKs and validation of multi-target builds)
- More versions will move over after this
#rb david.harvey

[CL 26150552 by josh adams in ue5-main branch]
2023-06-21 11:21:01 -04:00
serge bernier
7bf7dd423c Fix global usage of all cvars related to shader pipelines:
r.ShaderPipelines
r.Material.ExcludeNonPipelinedShaders

Both cvars are currently disable on WindowsEngine.ini which make them also disable when we cook for consoles. ExcludeNonPipelinedShaderTypes is currently used only at cooking time when we compile shaders which is currently returning false, since the value is disabled on windows. Making those cvars use FShaderPlatformCachedIniValue, will allow to have specific platform value when cooking for a specific target. Moving r.Material.ExcludeNonPipelinedShaders to the defaultengine.ini file to keep it disable for the moment and not affecting shader key string. Will enable it progressively on console later.


r.Shaders.RemoveUnusedInterpolators

Make that cvar platform agnostic, since it will be used in on other consoles eventually. Platforms supporting the stripping of unused interpolators will check the same flag (CFLAG_ForceRemoveUnusedInterpolators) to enable it. Since windows can run opengl, and stripping is not supported on that shader platform, add extra logic to exclude the flag.

-Make the RHISupportsShaderPipelines function access a real DDPI attribute and not just test if we are not on mobile. Will need this to be able to have stripping unused shader interpolators on Switch.

[REVIEW] Laura.Hermanns

[CL 26018371 by serge bernier in ue5-main branch]
2023-06-15 13:27:44 -04:00
Arciel Rekman
f040de9c33 Enable native MMV for preview platforms when running editor on Vulkan (UE-147903)
#rb Rob.Srinivasiah, Erica.Stella
#jira UE-147903
#review
#preflight 6470c853cc626ec165a45c30

[CL 25643164 by Arciel Rekman in ue5-main branch]
2023-05-26 11:02:46 -04:00
carl lloyd
c82a87e483 Enabled Distance Fields in Android rendering settings, on ES31 platforms this should still be disabled by the device profiles and cvar
#rb trivial
#preflight none

[CL 25487106 by carl lloyd in ue5-main branch]
2023-05-16 06:41:06 -04:00
carl lloyd
38a0d3bd9d Config to enable RT on Android SM5 devices
#rb Jack.Porter
#preflight none

[CL 25302841 by carl lloyd in ue5-main branch]
2023-05-02 12:00:15 -04:00
Florin Pascu
cd8651734e UX: Remove user-visible ES31 editor references and replace with Mobile
#jira UE-134173
#rb Jack.Porter
#preflight 6447ac2e641e2c3cb4227930

[CL 25178065 by Florin Pascu in ue5-main branch]
2023-04-25 07:05:08 -04:00
Aaron McLeran
70e7c3734f Removing many vestigates of old audio engine code.
#rb Ryan.Mangin
#jira UE-144348
#preflight 6446e9d30206a6e20f49f2e7

[CL 25172786 by Aaron McLeran in ue5-main branch]
2023-04-24 18:22:37 -04:00
dmitriy dyomin
6f5740c36c Resubmitting GPU Landscape section culling, with a mising landscape fix
#p4v-cherrypick 25142057

[CL 25142397 by dmitriy dyomin in ue5-main branch]
2023-04-21 01:43:20 -04:00