Optimisation
UE4
Android
Astuces générales
- Limiter les BP qui Tick
- timeline
- timer
- event
- tick interval
- activer/désactiver tick
- Limiter l'utilisation de fonctions "chères"
- get All Actors From Class
- For Loop - mais si nécessaire, penser au break!
- spawnActor
- Utiliser le C++ pour des calculs complexes dans le tick
Astuces générales (2)
- Limiter le nombre de triangles
- Création de sprites animés 2D à partir de modèle 3D
- Imitation lumière simple avec textures
- Combiner plusieurs objets 3D en 1
- un modèle complexe > plein de modèles simples ...en général ...mais pas toujours
- Utiliser LOD (si objets visibles à != distances)
- Détruire (ou recycler) les objets qui ne seront plus affichés
Astuces générales (3)
- Limiter le nombre de Shader dans une scène
- Simplifier les shaders :
- pas trop de math
- pas trop de fonctions procédurales
- pas trop de if ..
- placer les calculs complexes au niveau vertex plutôt que pixel
- éviter transparence
- Eviter les lumières dynamiques
- Limiter les ombres dynamiques
- Pas d'overlap des lumières "stationary"
Support Android
- Le plus répandu : OpenGL ES3.1
- Le plus rapide : Vulkan
- Les mobiles doivent supporter:
- GL_EXT_texture_buffer
- GL_EXT_color_buffer_half_float
Mobile Rendering
le + rapide mais peu d'effets
- Project settings - Rendering - Mobile
- mobile HDR : décoché = pas de lumières, pas de post-process
- Disable vertex fogging in mobile shaders : coché = pas de brouillard
- maximum number of CSM cascades to render : 2 (utilisé pour lumières directionnelles dynamiques)
- mobile MSAA : No-MSAA (multi-sample anti aliasing)
Mobile Material
le + rapide mais peu d'effets
-
Eviter la transparence !
-
Node material principal - Details panel
-
use full precision : décoché
-
use lightmap directionality : décoché
-
fully rough : coché (pas d'effets de réflexion!)
-
-
Project settings - Android Material Quality - ES31
-
possibilité de forcer certains paramètres en fonction des profils de mobile Low/medium/high
-
Mobile Lighting
- Objets dynamiques ne projettent pas d'ombres
-
Tous les types de lumières ne sont pas supportés
-
Lumières statiques recommandées
Mobile Texture
- Dimension max : 2048
- Dimension = 2^n
- Pas forcément carré (mais recommandé)
- Compression Settings : TC_Default ou TC_NormalMap
- Propriété sRGB cochée pour toute les texture map (mais pas normal maps ou mask)
- ...
Mobile Mesh
- Skeletal mesh, static mesh, landscape, CPU particle sprites, particle mesh
- Pour chaque mesh : Nombre de vertices < 65535
- Pour chaque skeletal mesh : Nombre de bones < 75
-
LOD
Mobile Scale, Frame Pacing
- Scale Factor
- joue avec la résolution de sortie du projet
- créer le fichier DefaultDeviceProfiles.ini dans le répertoire config du projet
0.0 = résolution native du mobile
1.0 = 1280 / 720
1.4 = 1280 x 1.4 / 720 x 1.4
- Frame Pacing
- permet de limiter le nombre de fps
Réduction taille APK
- Commencer le projet avec un template vide (no starter content)
- Suppression de tous les assets inutiles
- Désactiver les plugins inutilisés
- Project settings - Packaging - Packaging - advanced - Create compressed cooked package : coché
Mobile Test Rendu
-
Voir le rendu dans l'editeur principal
Settings - Preview Rendering Level - Android ES3.1 -
Voir le coût des material/lumières
-
View Modes list
-
Optimization Viewmodes
-
Shader Complexity
-
Mobile Test
-
Ouvrir la console
-
appuyer sur la touche ²
-
tap avec 4 doigts sur mobile
-
-
stat fps
-
Pour tester dans des conditions correctes:
-
Play in Standalone
-
Minimizer l'éditeur
-
Désactiver Frame Rate Smoothing (project settings)
-
Désactiver VSync (console : r.vsync 0)
-
Mobile Command Stat
-
stat unit / stat unitgraph / stat rhi
-
frame : temps total pour finir une frame
-
game : temps de calcul du code C++ ou Blueprint
-
draw : temps de rendu côté CPU
-
gpu : temps de rendu côté GPU
-
draws / DrawPrimitive calls : < 700 (mobile)
-
prims / Triangles drawn : < 500k (mobile)
-
- StartFPSChart / StopFPSChart
- enregistre ces valeurs dans un fichier CSV
Mobile Command Stat (2)
-
stat scenerendering
-
détails des draw call
-
-
ProfileGPU
-
showFlag.XXX 0 / showFlag.XXX 1
-
désactiver / activer des fonctionnalités
-
showFlag.StaticMeshes, SkeletalMeshes, Particles, Lighting, Translucency, ReflectionEnvironment, InstancedStaticMeshes, QuadOverdraw, ShaderComplexity, LightComplexity ...
-
A rendre !
-
Tester les outils de stat/profiling
-
Créer/ouvrir un projet
-
évaluer les performances de base
-
ajouter/modifier 1 fonctionnalité/élément
-
réévaluer les performances
-
recommencer...
-
-
Documenter tout ça dans un fichier word
-
texte explicatif
-
captures d'écran des changements
-
captures d'écran des modifs de performances
-
indiquer comment trouver le problème à partir des outils de stat/profiling
-
Optimisation UE4 - Mobile
By tetorea
Optimisation UE4 - Mobile
Quelques trucs pour optimiser les jeux UE4, surtout pour des jeux mobiles Android
- 741