De manière générale, bon nombre de produits GameWorks deviennent compatibles avec DirectX 12, proposent une implémentation Direct Compute en plus de CUDA (ce qui permet d’utiliser l’accélération graphique avec des cartes AMD, mais uniquement sous Windows), ainsi que l’ouverture du code source d’une série de bibliothèques supplémentaires.
DirectX 12 pour les développeurs
La grande différence entre les versions 11 et 12 de DirectX est le niveau d’abstraction : il faut moins de code pour un même effet avec DirectX 11, le pilote graphique s’occupe de l’optimisation d’une série de primitives de haut niveau (qui déchargent donc le programmeur d’une grande partie du travail). Au contraire, avec DirectX 12, le programmeur récupère une énorme flexibilité, mais doit effectuer le travail que le pilote n’effectue plus.
Les possibilités d’optimisation sont donc bien plus grandes, mais les risques également. NVIDIA travaille sur les deux fronts : proposer de nouveaux outils de développement et préparer toutes ses bibliothèques GameWorks pour DirectX 12. Côté outils, Nsight 5.3 apporte la compatibilité avec DirectX 12 et certains casques de réalité virtuelle. PIX, le débogueur visuel DirectX de Microsoft, peut également lire les compteurs de performance des cartes graphiques GeForce.
NVIDIA annonce aussi un nouvel outil : Aftermath, une bibliothèque à intégrer aux jeux afin de déboguer plus facilement les cas de crash. Le principe est d’introduire des marqueurs à intervalle régulier dans le code, où l’état du GPU est sauvegardé. Lors d’une analyse après crash, il devient possible de remonter la ligne du temps au niveau de ces marqueurs. Au niveau de la performance, Aftermath est extrêmement léger : il n’a pas d’impact mesurable sur un jeu. Il peut donc être inclus dans des jeux en production, sans être cantonné au niveau du test.
Nouveautés GameWorks
Une nouvelle version de FleX, le moteur de simulation de particules unifié, est apparue : la 1.1.0 peut exécuter ses calculs sur un processeur graphique par CUDA ou par Direct Compute ; cela ne veut pas dire que CUDA est abandonné, puisque FleX est maintenant compatible avec la version 8.0. Quelques fonctionnalités ont été ajoutées, l’API a été uniformisée avec d’autres bibliothèques physiques de NVIDIA.
Bien évidemment, FleX est maintenant compatible avec DirectX 12. En particulier, la bibliothèque peut tirer parti des fils d’exécution asynchrones pour lancer ses calculs quand le GPU est moins utilisé par le rendu graphique.
Flow est une nouvelle bibliothèque pour le rendu et la simulation de volumes, principalement de la fumée, du feu, des fluides enflammés. Elle remplace et généralise Turbulence et FlameWorks.
HairWorks, pour la simulation de poils et de cheveux, apporte principalement la possibilité d’utiliser la bibliothèque avec DirectX 12 (la version 1.3 est d’ores et déjà disponible sur GitHub, mais pas encore ailleurs).
Le module de destruction, autrefois connu sous le nom de APEX Destruction, a été complètement réécrit pour pleinement profiter des cartes graphiques modernes, tout en laissant la plus grande flexibilité aux développeurs. Blast se focalise sur l’implémentation de la destruction des objets, pas de la simulation physique en général ou de l’affichage : ces points doivent être gérés par l’application (évidemment, un module d’extension intègre Blast dans le moteur physique maison, PhysX). Côté simulation, les contraintes sont simulées de manière bien plus détaillée qu’à l’époque APEX Destruction, ce qui permet de créer les fissures aux endroits les plus faibles. (Plus de détails sur le site officiel.)
De manière similaire, APEX Clothing laisse la place à NvCloth. La bibliothèque semble avoir été réécrite pour plus de flexibilité, comme Blast, avec une compatibilité DirectX 11 et 12, les solveurs pouvant fonctionner indifféremment sur CPU ou sur GPU.
Libération du code source
La libération du code source de GameWorks est une opération de longue haleine, débutée en 2015. NVIDIA continue dans la lignée, avec plus de code disponible. Cependant, les conditions ne semblent pas changer : pas de licence libre, enregistrement obligatoire mais gratuit.
Sources et images : communiqué de presse de NVIDIA, NVIDIA talks DX12, including GameWorks support, GDC 2017: NVIDIA Gameworks goes DX12 and more !.