Commit Graph

126 Commits

Author SHA1 Message Date
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
john huelin
f283333ad0 Revert GPU Landscape section culling
#rb jonathan.bard

[CL 25139777 by john huelin in ue5-main branch]
2023-04-20 19:09:51 -04:00
dmitriy dyomin
b7acb3e784 Enable landscape GPU culling on Android and iOS
[CL 25107263 by dmitriy dyomin in ue5-main branch]
2023-04-19 11:12:19 -04:00
Florin Pascu
345666d77f Volumetric Support For Mobile - disabled by default in DP
Removed bSupportsVolumetricFog from DDPI
#jira UE-157201
#rb Dmitriy.Dyomin
#preflight 64119df15819afacaff56035

[CL 24652571 by Florin Pascu in ue5-main branch]
2023-03-15 07:26:45 -04:00
charles bloom
51a5e3e5a9 fix Platform Texture name remaps should be done before Conditional Prefix
this way having the OODLE_ or TFO_ prefix enabled doesn't break ETC or ASTC remaps in the platform
fix TextureFormatRemovePrefixFromName incorrectly assuming format names don't have underscores in them
Platform remap config no longer needs prefixed versions
this also turns on Oodle for Android DXT flavor

#preflight https://horde.devtools.epicgames.com/job/63fcf77960163ed3c2494e6e
#rb dan.thompson
#jira none

[CL 24428598 by charles bloom in ue5-main branch]
2023-02-27 14:02:31 -05:00
florin pascu
fbeaaad187 User friendly labels for Shader Preview Levels
#rb Gregory.Yepes
#preflight 63efae001d71bcd262fbf88d

[CL 24287942 by florin pascu in ue5-main branch]
2023-02-17 14:26:21 -05:00
dmitriy dyomin
4638292c60 Prefer D24_S8 depth target on Android Vulkan (Undo CL# 2406930)
[CL 24114628 by dmitriy dyomin in ue5-main branch]
2023-02-09 22:57:42 -05:00