Developpez.com - Rubrique 2D-3D-Jeux

Le Club des Développeurs et IT Pro

Microsoft Shader Conductor transpile des shaders à partir de HLSL

Le 2018-11-13 15:35:15, par dourouc05, Responsable Qt & Livres
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.
  Discussion forum
2 commentaires
  • FatAgnus
    Membre chevronné
    La phrase « Microsoft s’ouvre de plus en plus vers le logiciel libre » m'a beaucoup amusé. Je ne pense pas que Microsoft s'ouvre aux idées de la Free Software Foundation et de Richard Stallman ! L'idée principale du logiciel libre et que l'utilisateur final ait le contrôle de ses logiciels en pouvant avoir accès au code source des ces derniers, publiés sous une licence libre. Les utilisateurs des produits Microsoft ont-il la liberté d'étudier et de modifier le code source de Windows, Office et leurs autres produits ? Non.

    Par contre oui Microsoft s'ouvre de plus en plus vers le logiciel open source, donc aux idées Open Source Initiative et d'Eric Raymond, à savoir une méthodologie de développement qui consiste à placer les sources sous une licence open source dans le but d'attirer des développeurs, d'accélérer le développement et d'en réduire le coût de développement.

    La licence MIT utilisée pour le projet Shader Conductor est à la fois ne licence open source et libre. Mais la liberté des utilisateurs chère à la Free Software Foundation n'est pas l'objectif de Microsoft, bien au contraire. Microsoft fait de l'open source pas du logiciel libre.
  • hotcryx
    Membre extrêmement actif
    Microsoft suit le mouvement.

    Quand Android, Raspberry, Ubuntu se sont intéressés à ARM, Microsoft a fait un pas dans cette direction.