Vulkan est une API graphique de bas niveau qui devrait avoir des conséquences positives aussi bien pour les développeurs, grâce à moins de travail nécessaire lors des portages, que pour les joueurs de jeux vidéo, avec une hausse des performances à attendre, et une baisse de la consommation. Découvrons ensemble ce qu’est une API graphique et comment Vulkan compte révolutionner l’industrie du jeu vidéo mobile face à un Open GL ES un peu vieillissant. N’hésitez pas à jeter un œil à notre vidéo explicative.

Vulkan jeux

En novembre dernier, dans notre article sur la révolution des performances mobiles par l’outil de notre partenaire GameBench, nous abordions le cas de Vulkan, la nouvelle API graphique de Khronos Group, à l’image d’Open GL. À l’époque, les développeurs de jeux vidéo mobiles attendaient beaucoup de Vulkan, notamment sur l’aspect des meilleures performances, mais aussi sur le support du multi-plateformes pour faciliter la réalisation d’un jeu mobile et PC. Quelques mois plus tard, lors du MWC 2016, le Khronos Group a officiellement dévoilé les spécifications de Vulkan 1.0. L’occasion de revenir un peu plus en détail sur Vulkan ainsi que sur les API graphiques.

 

Qu’est-ce qu’une API ?

Pour commencer, qu’est-ce qu’une API (Application Programming Interface), une interface de programmation en français ? L’API est un ensemble de fonctionnalités (plus précisément classes, méthodes et fonctions) permettant aux développeurs de faire facilement le lien entre deux éléments, par exemple entre un site Internet et un service Web, comme le fait d’afficher des tweets sur une page. En fait, l’API facilite la vie des développeurs en leur proposant des fonctionnalités prêtes à l’emploi qui effectuent des actions automatiques, beaucoup plus longues et difficiles à réaliser sans API.

 

Qu’est-ce qu’une API graphique

Une API graphique est une interface de programmation spécifique, qui permet de créer des rendus 2D et 3D simplement et rapidement, en utilisant des fonctions prêtes à l’emploi qui seront traitées par la puce graphique, en passant par le pilote graphique qui traduira les fonctions en commandes à exécuter. En utilisant une API graphique (Open GL, Vulkan, DirectX, etc.), il est alors possible de créer des moteurs 3D. Ces moteurs 3D (Unreal Engine, Unity 3D, etc.) seront ensuite utilisés par les développeurs de jeux vidéo pour créer leurs titres.

API graphique vulkan

 

Vulkan vs Open GL ES

Quelle est la différence entre Vulkan et Open GL ES ? Tout d’abord, Open GL ES est la version mobile d’Open GL, avec moins de fonctionnalités. Actuellement, lorsqu’un développeur veut sortir un titre sur PC et mobile, il doit utiliser un moteur 3D compatible avec Open GL pour PC et Open GL ES pour mobile.

Il existe toutefois des différences entre ces deux API avec moins de fonctionnalités sur mobile et il faut donc deux développements différents. Vulkan homogénéise le développement grâce à une seule version de l’API, avec beaucoup moins de modifications nécessaires pour les développeurs entre la version PC et la version mobileVulkan ne dispose pas de version dédiée au mobile, puisque l’API graphique est unifiée : les développeurs utilisent la même, que ce soit pour créer un moteur 3D à destination des PC ou des smartphones et tablettes. 

Vulkan vs Open GL ES

 

Les avantages de Vulkan

Vulkan dispose de nombreux avantages face à Open GL ES. Pour clarifier la situation, Vulkan ne remplace pas Open GL ES qui continuera d’évoluer parallèlement à Open GL. Les développeurs auront donc le choix d’utiliser Vulkan ou Open GL (ES) pour la création de leur moteur 3D. Les deux principaux avantages de Vulkan tiennent à la hausse des performances et à la baisse de la consommation.

Vulkan permet une hausse des performances grâce à plusieurs facteurs. Le premier, c’est le passage beaucoup moins fréquent par le pilote graphique. Avec Open GL ES, chaque commande de rendu doit passer par le pilote, ce qui induit de la latence, une charge processeur supplémentaire (l’overhead) et donc une diminution des performances. Vulkan permet d’éviter de passer par le pilote pour certaines actions (gestion de la mémoire et des threads), c’est pour cette raison qu’on dit que Vulkan est une API de bas niveau : elle peut piloter directement le GPU.

L’API graphique Vulkan permet aussi d’augmenter les performances grâce à un meilleur support des processeurs multicœurs, en supportant par défaut de multiples threads. Ainsi, Vulkan peut optimiser l’utilisation d’un processeur doté de multiples cœurs pour mieux répartir la charge et tirer parti des performances maximales. C’est grâce à cette nouveauté qu’il est désormais possible d’afficher des milliers, voire des centaines de milliers d’objets sur une scène sans mettre à genoux le processeur, tout en conservant une bonne fluidité, exprimée en images par secondes (FPS).

gh_es_vs_vk1

Vulkan, à gauche, utilisant davantage de cœurs pour plus de FPS

Dans le cadre d’un jeu qui n’est pas trop gourmand en terme de ressources, Vulkan pourra tout de même diminuer légèrement la consommation de l’appareil puisque le processeur sera moins sollicité et utilisé de manière beaucoup plus optimisée.

Enfin, Vulkan devrait permettre de profiter de titres PC et mobiles de plus en plus similaires en termes de fonctionnalités et de graphismes. En effet, Vulkan va permettre aux développeurs de moteurs 3D d’utiliser une seule et même base commune pour les titres destinés aux PC et les titres destinés aux mobiles. Il subsistera bien évidemment encore quelques différences, notamment du fait de la présence d’un écran tactile sur mobile ou d’une puissance plus faible, mais celles-ci tendent à disparaitre.

 

Les inconvénients de Vulkan

Les avantages de Vulkan sont contrebalancés par quelques inconvénients, à commencer par une plus grande difficulté dans la création de scènes 2D ou 3D. En effet, Vulkan a créé SPIR-V, un nouveau langage de programmation plus complexe que les langages utilisés auparavant par les développeurs. Ce nouveau langage permettra toutefois aux développeurs de réaliser des moteurs 3D largement plus optimisés. En fait, la plupart des développeurs non expérimentés ou qui n’ont pas le temps pourront passer par des moteurs 3D ou des middlewares déjà prêts à l’emploi à l’image d’Unity (Hitman Sniper, Lara Croft Go, etc.), d’Unreal Engine (Real Boxing 2 Creed, Mortal Kombat X, etc.) ou de Marmalade (SimCity Buildit, Earn to Die 2, etc.).

Samsung Galaxy S7 (2 sur 2)

Car Chase, l’une des rares scènes 3D utilisant Android Extension Pack

Certains acteurs craignent que Vulkan finisse comme Android Extension Pack : au fond d’un tiroir. Pour le moment, aucun jeu mobile n’a encore été développé en utilisant Vulkan, mais ça ne saurait tarder, puisque l’ensemble des acteurs des moteurs 3D ou des middlewares ont affirmé travailler au support de Vulkan. Face à Vulkan, on trouve deux autres API graphiques de bas niveau : Metal sur iOS et DirectX 12 sous Windows. Le fait que ces trois API soient de type bas niveau devrait faciliter le portage entre les plateformes par rapport à l’utilisation d’une API de haut niveau. Vulkan ne devrait donc pas fragmenter l’écosystème des appareils capables de faire tourner des jeux vidéo, et c’est tant mieux.

 

Votre terminal supporte-t-il Vulkan ?

En revanche, pour pouvoir faire tourner un jeu supportant Vulkan sur un appareil mobile, il faut réunir trois conditions : un OS, un GPU et un pilote compatible. Le terminal en question doit disposer d’Android 6.0 Marshmallow ou d’un version ultérieure, d’un GPU (puce graphique) compatible, à l’image de certaines puces PowerVR d’Imagination Technologies (notamment PowerVR GX6450, GX6250, G6430 et G6230) ou Mali d’ARM (T760, T860 et T880), des Adreno des séries 400 et 500 de Qualcomm ou encore des Tegra X1 et K1 chez Nvidia.

Sur le papier, tous les GPU compatible Open GL ES 3.1 peuvent supporter Vulkan. Mais dans la pratique, il faut que le concepteur de la puce ait développé un pilote spécial, et surtout, que le constructeur du terminal déploie ce pilote par le biais d’une mise à jour. Normalement, tous les appareils dotés d’un Snapdragon 820 devraient être compatibles avec Vulkan, à l’image du Galaxy S7 de Samsung sur lequel on a pu voir une démonstration lors du MWC 2016.

Lien Youtube
Chaine Youtube FrAndroid

 

Une vidéo pour mieux comprendre

Pour mieux comprendre les enjeux et les avantages de Vulkan, nous avons réalisé une vidéo dédiée avec quelques infographies animées qui devraient permettre de mieux saisir les principes d’API graphiques et les différences entre Vulkan et Open GL ES, mais aussi pour mieux comprendre la place de l’API graphique dans le processus de création d’un jeu vidéo, notamment face au moteur 3D, aux pilotes graphiques et au GPU.

Lien Youtube
Chaine Youtube FrAndroid