Quelles sont les différences et lequel devriez-vous utiliser ?



Sorti en même temps que Windows 10 en 2015, DirectX 12 a marqué un tournant majeur pour les joueurs et les développeurs de jeux vidéo. Cette version de Microsoft a rapidement gagné en popularité grâce à sa capacité à alléger la charge du processeur tout en optimisant les performances du GPU.

Cependant, l’amélioration des performances est-elle aussi simple qu’un passage de DirectX 11 à DirectX 12 ? Examinons de plus près les différences entre ces deux versions pour mieux comprendre.

Qu’est-ce que DirectX de Microsoft ?

Comme nous l’avons expliqué dans notre présentation de Microsoft DirectX, il s’agit d’un ensemble d’interfaces de programmation d’applications (API) conçu pour gérer les aspects liés au multimédia, notamment le développement de jeux pour les plateformes Microsoft comme Windows et Xbox. Pour mieux comprendre, parlons rapidement des API.

Une API permet à différents logiciels de communiquer entre eux. Imaginez-la comme un téléphone : si votre mère vous envoie un SMS avec une liste de courses, votre téléphone reçoit ces informations et les affiche, c’est un exemple d’API en action.

Quelles sont les différences entre DirectX 11 et DirectX 12 ?

DirectX 12 est tout simplement la version la plus récente de DirectX. Une des différences clés réside dans leur façon d’interagir avec le matériel. La majorité des jeux développés avec DirectX 11 n’utilisent qu’entre deux et quatre cœurs de processeur, dont un qui dicte généralement au GPU ce qu’il doit faire.

Les cœurs restants sont employés pour gérer d’autres éléments gourmands en ressources CPU, comme les effets de particules ou la distance d’affichage. À l’inverse, DirectX 12 répartit la charge de travail sur plusieurs cœurs, permettant à chacun de communiquer avec le GPU de manière simultanée.

DirectX 12 introduit également des fonctionnalités avancées, telles que l’informatique asynchrone et les objets d’état de pipeline (PSO). L’informatique asynchrone permet une meilleure utilisation du GPU en autorisant l’exécution de plusieurs tâches en parallèle, libérant ainsi son potentiel.

Outre le rendu graphique, le GPU prend en charge de nombreuses autres tâches, telles que l’exécution d’algorithmes d’apprentissage automatique. Avec DirectX 11, le GPU ne peut exécuter qu’une seule tâche à la fois et dans un ordre précis, ce qui nuit aux performances, car les ressources ne sont pas utilisées de manière optimale.

Imaginez un serveur dans un restaurant : il prend votre commande étape par étape, d’abord les boissons, puis le plat principal, et enfin le dessert. Bien que cela fonctionne, ce n’est pas la solution la plus efficace. L’informatique asynchrone de DirectX 12 permettrait au serveur de prendre toute votre commande en une fois, comme dans une chaîne de restauration rapide, maximisant ainsi l’utilisation du GPU et améliorant les performances en jeu.

DirectX 12 a aussi introduit les PSO, des objets qui décrivent l’état de l’ensemble du pipeline graphique. Avec DirectX 11, lorsque la géométrie d’un jeu est soumise au GPU, différents paramètres matériels sont responsables de l’interprétation et du rendu de ces données. Ce processus est le pipeline graphique. Cependant, le pipeline graphique de DirectX 11 présente des limites.

Ce pipeline contient une série d’états différents, tels que l’état de rastérisation, l’état de fusion et l’état de pochoir de profondeur. Dans DirectX 11, il existe des dépendances entre ces états, ce qui signifie qu’un état ne peut être terminé que lorsque le précédent est défini, ce qui réduit l’utilisation du GPU et augmente la charge sur le CPU, affectant ainsi les performances.

Pour résoudre ce problème, DirectX 12 introduit les PSO, des objets qui regroupent les différents états et composants nécessaires à la création d’une image. Cela permet au GPU de prétraiter chaque état dépendant au lieu de recalculer constamment les états en fonction du pipeline graphique actuel.

Cela réduit considérablement la surcharge du processeur par rapport à DirectX 11, améliorant ainsi les performances. Selon Microsoft, DirectX 12 réduit la charge du processeur jusqu’à 50 % et améliore les performances du GPU jusqu’à 20 %. Ces améliorations sont notables, mais ne garantissent pas les mêmes résultats dans tous les cas.

Pourquoi passer de DirectX 11 à DirectX 12 n’est pas simple

DirectX 11 est apparu pour la première fois sur Windows Vista le 27 octobre 2009. Entre sa sortie et celle de DirectX 12 en 2015, il s’est écoulé six ans durant lesquels des milliers de jeux ont été développés en utilisant DirectX 11. Malheureusement, la transition vers DirectX 12 n’est pas aussi simple qu’il n’y paraît.

DirectX 11 est considéré comme une API de haut niveau, ce qui signifie qu’elle est plus facile à utiliser pour les développeurs. Cela conduit à des jeux stables, bien optimisés et agréables à jouer. DirectX 12, en revanche, est une API de bas niveau, très différente de DirectX 11. Elle permet aux développeurs d’optimiser les performances avec une grande précision, mais nécessite des connaissances approfondies.

Ainsi, un jeu développé sous DirectX 12 pourrait présenter des performances inférieures en fonction de la maîtrise de l’API par le développeur. Les améliorations apportées par DirectX 12 sont réelles, mais leur impact dépend de la manière dont elles sont mises en œuvre. Pour cette raison, de nombreux développeurs préfèrent s’en tenir à des API de haut niveau telles que DirectX 11.

DX 11 vs DX 12 : lequel choisir ?

Le choix dépend de plusieurs facteurs, notamment du jeu que vous lancez. Par exemple, Guild Wars 2 fonctionne sous DirectX 11. Même si votre système d’exploitation et votre matériel prennent en charge DirectX 12, vous ne pourrez pas sélectionner DirectX 11 dans Guild Wars 2 car le jeu n’est pas compatible. Cette décision revient entièrement au développeur, ArenaNet.

Crédit image : Martin Kerstein/Guild Wars 2

Il a fallu neuf ans à ArenaNet pour passer de DirectX 9 à DirectX 11. Cependant, certains jeux, comme Fortnite, Battlefield 5 ou Shadow of the Tomb Raider, prennent en charge à la fois DirectX 11 et DirectX 12. Les utilisateurs peuvent ainsi basculer entre les deux dans les paramètres du jeu.

Cette compatibilité soulève la question de savoir quelle version offre les meilleures performances en jeu. La vidéo suivante présente les différences entre DirectX 11 et DirectX 12 dans plusieurs jeux, en analysant des données telles que la moyenne d’images par seconde, l’utilisation du processeur et du GPU, en utilisant un AMD Ryzen 3600, une Nvidia GeForce RTX 3060 Ti et 16 Go de RAM DDR4.

Les résultats peuvent être surprenants, avec parfois peu de différence visuelle entre les deux versions, malgré les années qui les séparent. Il est aussi possible de constater des différences de charge du GPU et du CPU, les versions DX 12 demandant généralement moins de ressources que les versions DX 11.

En plus de la prise en charge du jeu, le choix entre DirectX 11 et DirectX 12 dépend de votre matériel. La plupart des GPU modernes prennent en charge DirectX 12, ce qui n’est pas le cas des anciens GPU comme la Radeon HD 4870, sortie en 2008 et limitée à DirectX 10. Cela signifie qu’il serait impossible de lancer la majorité des jeux récents, qui fonctionnent avec DirectX 11 et 12.

DirectX 12 est-il le bon choix pour vous ?

En résumé, la transition de DirectX 11 à DirectX 12 n’est pas aussi simple qu’on pourrait le penser. Cela dépend de plusieurs facteurs, tels que le matériel, le logiciel, le système d’exploitation et la compatibilité du jeu. Tous ces éléments doivent être pris en compte avant de prendre une décision, une situation qui devrait probablement se reproduire avec les futures versions de DirectX.