Le prochain compilateur de shaders de Microsoft est libre

C’est de plus en plus l’habitude du côté de Microsoft : libérer du code source quand cela n’a pas de valeur de le garder privé. Maintenant, c’est au tour de DirectX de voir un de ses composants libéré : plus particulièrement, la prochaine version du compilateur de shaders (de petits fragments de code qui paramètres le rendu à l’écran, notamment les effets spéciaux), d’ores et déjà sous licence MIT.

Ce nouveau compilateur se base d’ailleurs sur une architecture entièrement libre : LLVM (plus connu grâce à Clang, le compilateur C et C++ qui s’axe autour de LLVM). L’objectif est d’arriver à un compilateur fonctionnel plus rapidement, mais aussi de profiter de l’écosystème complet (outils, documentation, expertise, notamment) pour faciliter l’innovation dans le futur. Notamment, LLVM fournit un certain nombre de passes d’optimisation du code, ce qui pourrait améliorer fortement la performance des shaders dans le futur.

Le langage de programmation est HLSL, spécifique à DirectX (OpenGL utilise GLSL). La version SM6 offre quelques avantages syntaxiques par rapport à l’itération précédente, notamment pour profiter de l’architecture de type SIMD des processeurs graphiques actuels : ils sont très performants pour appliquer une même opération sur plusieurs données simultanément. Ceci devrait faciliter l’écriture de shaders pour la suppression d’éléments invisibles, l’éclairage ou encore les opérations d’entrée-sortie.

La sortie de ce nouveau compilateur est une nouvelle représentation intermédiaire, nommée DXIL (c’est le même principe que pour Vulkan et SPIR-V). Elle n’est comprise que par les dernières préversions de Windows 10 (Windows 10 Insider Build 15007).

Cette libération de code source pourrait avoir une série d’effets secondaires. Par exemple, Wine (l’implémentation d’API Windows pour Linux, qui permet donc d’y lancer des applications Windows sans les toucher) aura une brique de moins à implémenter pour DirectX 12. Grâce à d’autres développements autour de LLVM, il devrait être possible de compiler un shader HLSL en SPIR-V et l’utiliser avec Vulkan. Toutes les répercussions ne sont pas encore visibles. Le développement de nouveaux outils par-dessus cette couche libre serait fortement facilité par l’intégration du code de Microsoft dans LLVM, mais cela n’a pas l’air d’être au programme (les passes d’optimisation et la génération du code DXIL y auraient leur place).

Voir le code source sur GitHub.

Source : New DirectX Shader Compiler based on Clang/LLVM now available as Open Source.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s