Article de reference

Langage de shader de haut niveau

Une scène contenant plusieurs shaders HLSL 2D différents. La distorsion de la statue est obtenue purement physiquement, tandis que la texture du cadre rectangulaire à côté d'ell...

Une scène contenant plusieurs shaders HLSL 2D différents. La distorsion de la statue est obtenue purement physiquement, tandis que la texture du cadre rectangulaire à côté d'elle est basée sur l'intensité des couleurs. Le carré en arrière-plan a été transformé et tourné . La transparence partielle et la réflexion de l'eau au premier plan sont ajoutées par un shader appliqué finalement à l'ensemble de la scène.

Le High-Level Shader Language ou High-Level Shading Language ( HLSL ) est un langage de shading propriétaire développé par Microsoft pour l' API Direct3D 9 afin d'augmenter le langage d'assemblage de shader , et est devenu le langage de shading requis pour le modèle de shader unifié de Direct3D 10 et supérieur.

Le HLSL est analogue au langage de shading GLSL utilisé avec la norme OpenGL . Il est très similaire au langage de shading Nvidia Cg , car il a été développé parallèlement à celui-ci. Les premières versions des deux langages étaient considérées comme identiques, mais commercialisées différemment. Les shaders HLSL peuvent permettre des augmentations de vitesse et de détail importantes ainsi que de nombreux effets spéciaux dans les graphiques informatiques 2D et 3D .

Les programmes HLSL se présentent sous six formes : les shaders de pixels (fragment dans GLSL), les shaders de vertex , les shaders de géométrie , les shaders de calcul , les shaders de tessellation (shaders de coque et de domaine) et les shaders de lancer de rayons (shaders de génération de rayons, shaders d'intersection, shaders de hit/closest hit/miss). Un vertex shader est exécuté pour chaque vertex soumis par l'application et est principalement responsable de la transformation du vertex de l'espace objet à l'espace de vue, de la génération des coordonnées de texture et du calcul des coefficients d'éclairage tels que les vecteurs normaux, tangents et bitangents du vertex. Lorsqu'un groupe de sommets (normalement 3, pour former un triangle) traverse le vertex shader, leur position de sortie est interpolée pour former des pixels dans sa zone ; ce processus est connu sous le nom de rastérisation .

En option, une application utilisant une interface Direct3D 10/11/12 et du matériel Direct3D 10/11/12 peut également spécifier un shader géométrique. Ce shader prend en entrée certains sommets d'une primitive (triangle/ligne/point) et utilise ces données pour générer/dégénérer (ou tesseller ) des primitives supplémentaires ou pour changer le type de primitives, qui sont ensuite envoyées au rastériseur.

D3D11.3 et D3D12 ont introduit Shader Model 5.1 et plus tard 6.0.

Comparaison des modèles de shaders

Les GPU répertoriés sont les matériels qui ont pris en charge les spécifications données en premier. Les fabricants prennent généralement en charge tous les modèles de shader inférieurs via des pilotes. Notez que les jeux peuvent prétendre nécessiter une certaine version de DirectX, mais ne nécessitent pas nécessairement un GPU conforme à la spécification complète de cette version, car les développeurs peuvent utiliser une version d'API DirectX supérieure pour cibler du matériel de spécification Direct3D inférieure ; par exemple, DirectX 9 expose des fonctionnalités de matériel de niveau DirectX7 que DirectX7 n'a pas, ciblant leur pipeline T&L à fonction fixe.

Comparaison des shaders de pixels

  • PS 1.0 — Rampage 3dfx inédit , DirectX 8
  • PS 1.1GeForce 3 , DirectX 8
  • PS 1.23Dlabs Wildcat Vice-président, DirectX 8.1
  • PS 1.3GeForce 4 Ti , DirectX 8.1
  • PS 1.4Radeon 8500–9250 , Matrox Parhelia , DirectX 8.1
  • Modèle de shader 2.0Radeon 9500–9800/X300–X600 , DirectX 9
  • Shader Model 2.0a — Modèle optimisé pour GeForce FX/PCX , DirectX 9.0a
  • Shader Model 2.0b — Modèle de shader Radeon X700–X850 , DirectX 9.0b
  • Modèle de shader 3.0Radeon X1000 et GeForce 6 , DirectX 9.0c
  • Modèle de shader 4.0Radeon HD 2000 et GeForce 8 , DirectX 10
  • Modèle de shader 4.1Radeon HD 3000 et GeForce 200 , DirectX 10.1
  • Modèle de shader 5.0Radeon HD 5000 et GeForce 400 , DirectX 11
  • Modèle de shader 5.1GCN 1+ , Fermi+, DirectX 12 (11_0+) avec WDDM 2.0
  • Modèle de shader 6.0 — GCN 1+, Kepler+, DirectX 12 (11_0+) avec WDDM 2.1
  • Modèle de shader 6.1 — GCN 1+, Kepler+, DirectX 12 (11_0+) avec WDDM 2.3
  • Modèle de shader 6.2 — GCN 1+, Kepler+, DirectX 12 (11_0+) avec WDDM 2.4
  • Modèle de shader 6.3 — GCN 1+, Kepler+, DirectX 12 (11_0+) avec WDDM 2.5
  • Modèle de shader 6.4 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) avec WDDM 2.6
  • Modèle de shader 6.5 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) avec WDDM 2.7
  • Modèle de shader 6.6 — GCN 4+, Maxwell+, DirectX 12 (11_0+) avec WDDM 3.0
  • Modèle de shader 6.7 — GCN 4+, Maxwell+, DirectX 12 (12_0+) avec WDDM 3.1
  • Modèle de shader 6.8 — RDNA 1+, Maxwell 2+, DirectX 12 (12_0+) avec WDDM 3.2


« 32 + 64 » pour les instructions exécutées signifie « 32 instructions de texture et 64 instructions arithmétiques ».

Comparaison des vertex shaders

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index