Ca fait un peu le buzz depuis le debt de l'année, cette nouvelle API multi support permettrait d'exploiter votre materiel de façon beaucoup plus optimisé que Direct 3D, Open GL, metal etc.
Comment que ca marche ?
En fait, il faut savoir qu'actuellement quand on parle de drivers/pilote Direct 3D ou Open GL, c'est un peu un abus de langage.
En fait un pilote Direct 3D, cela inclus 2 couches : les pilotes de la carte graphique, qui sont des fonctions très basique pour contrôler la carte graphique (transfert de donnée, déplacement de zone mémoire etc.) avec un certain niveau d’abstraction matériel, et Direct 3D, qui en fait n'est pas un pilote, mais une API graphique, c'est a dire un ensemble de fonction de plus haut niveau. on est pas encore au niveau d'un moteur 3D comme unreal engine ou ID tech etc, mais on dispose d'un ensemble de fonction de base de la 3D.
un moteur 3D, ca va encore plus loin, avec des possibilités d'effet de rendu, d'ombrage, de physique, etc déjà tout programmé.
En resumé, les 3 couches :
- Le drivers : abstraction de tous les accès aux fonctionnalités technique de la carte graphique
grosso modo, si on veut dessiner un triangle a l’écran en utilisant que le drivers, il faudra faire un peu de géométrie, coder des algo d'interpolation pour définir les contours, modifier une zone mémoire de la carte en fonction des contour pour afficher le triangle. C'est le genre de truc qu'il fallais faire pour programemr des jeux a l'époque "post API" (les fameux commodore, Atari, Amiga, amstrad, et les débuts du PC dnas le jeux. On peut egalement programmer le GPU pour faire des opération mathématique normalement a faire sur le CPU (transformation de cooredonnée etc)
- l'API : ensemble de fonctionnalitées de haut niveau pour l'affichage graphique et la gestion 3D
on veut afficher un triangle, on appel juste une fonction qui va le faire, idem si on veut modifier les coordonnées (rotation, etc) ils y a toute les fonctions déjà programmée.
- le moteur 3D : le niveau du dessus, c'est en gros un exemble de fonction déjà toute programmer pour avoir un rendu "réaliste" , il va donc simplifier tout ce qui est eclarage, ombrage, texture, parfois inclure des outils de modelisation etc.
ses 3 couches appellent les fonction de la couche immédiatement au dessous d'elle
Moteur de rendu -> API -> Drivers
Et Vulkan dans tout ça c'est quoi ?
En fait Vulkan se situe au niveau de l'API, mais inclu aussi un tas de fonction normalement accessible que depuis le drivers (manipulation mémoire etc.)
par exemple, si vous voulez dessiner 50 triangles (l'exemple n'a rien de réaliste,, c'est juste pour illustrer), en direct 3D, on va appler la fonction dessine triangle 50x, et derniere ca sera 50 appel a 25 fonctions du drivers.
En fait il est peut être inutile d'appeler 50 fois toutes les fonctions du drivers, par exemple si c'est 50 allocations de 30ko de ram graphique, il est plus rapide d'appeler 1 fois la fonction mais pour 50x plus de mémoire.
Vulkan permet d'aller dans ce détail. Bien sur cela demande plus de travail et de réflexion pour le programmeur, mais permet un code beaucoup plus optimisé.
Un jeux developper directement sous Vulkan pourrais pretendre a des performance double par rapport au même jeux développé en Direct X 11.
100% de gain de performance rien qu'en changeant l'API, ça fait quand même peur concernant le gâchis de puissance engendré par les OS et API poussive apparue depuis 20 ans...
Microsoft bien sur a régit et proposera bientôt via DirectX 12 une API aux capacités similaires, mais l'API Vulkan est dispo sur PC, Mac, Android, iOS, Xbox one, PS4...
Pour info, DOOM 4 en version VULKAN sur ma GTX 660 tourne plus vite que sur une GTX 960 sous Open GL...