Godot est compatible avec deux moteurs de rendu : GLES2 et GLES3. Vous devez choisir entre GLES2 et GLES3 lorsque vous démarrez votre projet et éviter de changer si possible. Les projets peuvent basculer entre ces deux moteurs de rendu, mais le changement nécessite un travail de migration supplémentaire.
Sur Android, ces moteurs de rendu utilisent respectivement les API OpenGL ES 2.0 et OpenGL ES 3.0. Le moteur de rendu GLES3 offre des fonctionnalités plus complexes, tandis que le moteur de rendu GLES2 est compatible avec davantage d'appareils Android. Pour des données de scène d'entrée identiques, les moteurs de rendu produisent également des sorties visuelles légèrement différentes. Cette disparité s'explique par le fait que le moteur de rendu GLES2 utilise un espace de couleurs sRVB, alors que le moteur de rendu GLES3 utilise un espace de couleurs linéaire.
Choisir un moteur de rendu
GLES2
Le moteur de rendu GLES2 est particulièrement adapté aux projets 2D ou 3D avec des exigences graphiques faibles. Il est compatible avec presque tous les appareils Android actifs. Si votre projet est conçu pour bien fonctionner sur des appareils plus anciens et que vous souhaitez les prendre en charge, GLES2 peut être le meilleur choix.
L'une des limites importantes du moteur de rendu GLES2 sur Android est qu'un seul format de texture compressée est accepté : ETC1. ETC1 n'est pas compatible avec un canal alpha. D'autres moteurs peuvent utiliser deux textures ETC1 comme solution de contournement, avec une texture contenant des données de couleur et une autre contenant les données du canal alpha. Godot ne fait pas cela. Les projets qui utilisent le moteur de rendu GLES2 sur Android doivent utiliser des textures non compressées lorsqu'un canal alpha est inclus. Les textures non compressées utilisent beaucoup plus de mémoire et ne sont pas aussi performantes que les textures compressées. Les appareils plus anciens dotés de ressources limitées peuvent rencontrer des problèmes lors de l'utilisation de textures non compressées volumineuses, y compris des limites de mémoire.
Les fonctionnalités de rendu avancées peuvent ne pas être disponibles avec le moteur de rendu GLES2. Les limites du moteur de rendu GLES2 incluent, sans s'y limiter:
- Mauvaise mise à l'échelle des performances en fonction de l'éclairage actif en temps réel.
- Incompatibilité avec les fonctionnalités de rendu telles que la plage haute définition, les propriétés de réfraction, les reflets de l'espace à l'écran ou l'occlusion ambiante de l'espace d'écran.
- Restrictions concernant la complexité du nuanceur.
- Absence de prise en charge de l'éclairage global en temps réel.
- Absence de prise en charge de l'accélération GPU pour les particules.
GLES3
Le moteur de rendu GLES3 est compatible avec environ 90 % des appareils Android actifs compatibles avec OpenGL ES 3.0. Seuls les appareils Android les plus anciens ne sont pas compatibles avec OpenGL ES 3.0.
Bien que le moteur de rendu GLES3 soit compatible avec tous les appareils OpenGL ES 3.0, sachez que les appareils plus anciens sont moins susceptibles de fonctionner à des fréquences d'images acceptables. Certains anciens appareils rencontrent également des bugs graphiques dans leur mise en œuvre d'OpenGL ES 3.0. Le moteur de rendu GLES3 sur Android dispose de solutions d'atténuation limitées pour les bugs de pilote. Ces problèmes sont moins préoccupants sur les appareils plus récents.
Le moteur de rendu GLES3 est compatible avec le format de compression de texture ETC2 sur Android. Contrairement au format ETC1, le format ETC2 est compatible avec un canal alpha.
Pour en savoir plus, consultez la documentation Godot - Différences entre GLES2 et GLES3.