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]
ShaderVersion bumped since View data has been changed.
#rb none
#jira none
#fyi charles.derousiers
[CL 26046671 by Sebastien Hillaire in ue5-main branch]
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]
Modify RenderLocalLightPrepass from fullscreenpass to instance draw of screen tiles
Restrict MobileLocalLightPrepass texture allocation only when LocalLight Prepass is enabled
#rb Dmitriy.Dyomin, Benjamin.Rouveyrol
[CL 25947848 by florin pascu in ue5-main branch]
This sheen mode is enabled by default for platforms which high quality shading. The models degrades into a Charlie Sheen model for lower platform. This can also be controlled with r.Substrate.SheenQuality.
#rb none
[FYI] sebastien.hillaire, chris.kulla
[CL 25910338 by charles derousiers in ue5-main branch]
Moving Editor only DDSPI types into the cpp files to keep Editor includes out of the global scope.
#rb florin.pascu
[CL 25815319 by christopher waters in ue5-main branch]
- glint can be enabled/disabled per platofm still.
- Glints are enabled by default now.
- Simplified the complexspecial path defines to only have one.
#rb none
#preflight none
#fyi charles.derousiers
[CL 25600737 by Sebastien Hillaire in ue5-main branch]
Runtime pixel formats are named PF_ASTC_<blocksize>_NORM_RG. Use texture format name ASTC_NormalRG_Precise for encoding.
[CL 25563983 by ben woodhouse in ue5-main branch]
Disable mask clip in PS if full depth prepass enabled.
Remove r.Mobile.EarlyZPassOnlyMaterialMasking and use r.Mobile.EarlyZPass=2 instead
#jira none
#rb Dmitriy.Dyomin, Florin.Pascu
#preflight 643f8092bf1053846691e5b4
[CL 25101153 by Wei Liu in ue5-main branch]
* Default now uses accurate sRGB value encoding.
* Lower platforms using lower shading quality (i.e., r.Substrate.ShadingQuality > 1), will continue to use the cheap sqrt/square encoding/decoding
Using proper sRGB encoding increases occupangy by 8 vgpr on ps4 and a fullscreen quad during the base pass by 0.2ms due to lower occupancy. So keep it disabled on lower platforms.
#rb none
#jira none
#preflight 642ad0058f078cc7031c1ae2
#fyi sebastien.hillaire
[CL 24891794 by Charles deRousiers in ue5-main branch]