Microsoft s’ouvre de plus en plus vers le logiciel libre, comme le montre sa dernière contribution : Shader Conductor. Il se destine au monde de la 3D, notamment des jeux. Pour obtenir un rendu précis, les processeurs graphiques peuvent exécuter du code (shader) à plusieurs niveaux : pixel (effets en 2D), sommets (transformation et éclairage), calculs non graphiques (par exemple, simulation physique), géométrie (transformation des résultats des calculs en objets affichables), pavage (augmentation du niveau de détail) ou, plus récemment, lancer de rayons.
Ces programmes doivent être écrits dans un langage de programmation spécifique. Pour DirectX, il s’agit de HLSL, mais ces programmes ne sont pas directement utilisables avec OpenGL, qui préfère GLSL (ou ESSL pour OpenGL ES)… sans oublier Apple, qui décide de jouer dans une autre cour avec MSL pour Metal. Shader Conductor vise à réduire la charge de travail des développeurs, en traduisant les programmes HLSL vers les autres langages (on peut donc parler d’un transpilateur).
Ce n’est pas le premier projet du genre. On peut citer Cg, un langage que NVIDIA proposait jusqu’en 2012, avec une transpilation vers HLSL et GLSL. Depuis lors, Khronos (à l’œuvre derrière la normalisation d’OpenGL et d’OpenCL, notamment) a développé SPIR-V, une représentation intermédiaire du code à exécuter sur un processeur graphique. Elle était à l’origine prévue pour OpenCL (donc pour effectuer du calcul sur processeur graphique), mais a été assez vite étendue à Vulkan (la nouvelle API de Khronos pour l’affichage, de plus bas niveau qu’OpenGL).
Shader Conductor n’est pas un très gros projet : il se base sur DirectX Shader Compiler, le compilateur HLSL que Microsoft a libéré l’année dernière, pour lire les fichiers HLSL, ainsi que sur SPIRV-Cross, le projet de Khronos pour la transpilation du code SPIR-V vers d’autres langages (avec un code efficace et lisible). De la sorte, Shader Conductor se “limite” à transformer le code HLSL en SPIR-V. L’objectif visé est probablement que les développeurs travaillent d’abord sur Windows, puis seulement s’intéressent à d’autres plateformes.
Le projet n’est pas encore très avancé, même si la génération de code SPIR-V est déjà assez complète (le premier commit est arrivé il y a moins de deux semaines, le code il y a cinq jours). Notamment, il n’est utilisable que sous Windows, mais Linux et macOS devraient “rapidement” faire leur apparition.
Partager