High-Level Shading Language
High-Level Shading Language ou High-Level Shader Language (HLSL) est le langage de programmation propriétaire des pipelines (shaders) des cartes graphiques 3D intégré à l'API Direct3D de Microsoft[1]. Il est devenu le langage de shading requis pour le modèle de shader unifié de Direct3D 10 et des versions ultérieures.
HLSL est analogue au langage de shader GLSL associé à la norme OpenGL. Il est très similaire au langage de shader Cg de Nvidia, car il a été développé en parallèle. Les premières versions des deux langages étaient considérées comme identiques, seules les appellations commerciales étaient différentes[2]. Les shaders HLSL peuvent permettre des améliorations de vitesse et des détails ainsi que de nombreux effets spéciaux en infographie 2D et 3D.
Six types de shaders HLSL existent :
- les pixel shaders (appelés fragments en GLSL),
- les vertex shaders,
- les geometry shaders,
- les tessellation shaders (Hull et Domain shaders),
- les ray tracing shaders (Ray Generation Shaders, Intersection Shaders, Any Hit/Closest Hit/Miss Shaders),
- les compute shaders (en).
Un vertex shader est exécuté pour chaque vertex (sommet) transmis par l'application, son rôle principal est la transformation du vertex de l'espace objet vers l'espace de vue, générant les coordonnées des textures et calculant les coefficients d'éclairage tels que la normale au vertex et les vecteurs tangents et bitangents. Quand un groupe de sommets (normalement trois, pour former un triangle) passe par le vertex shader, leur position de sortie est interpolée pour former des pixels dans cette zone ; ce processus est appelé rastérisation.
En option, une application utilisant Direct3D 10/11/12 et une implémentation hardware de Direct3D 10/11/12 peut aussi appeler un geometry shader. 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 découper (en)) des primitives supplémentaires ou pour changer le type de primitives, qui sont ensuite envoyées au rastériseur.
Direct3D 11.3 et Direct3D 12 ont introduit les Shader Model 5.1[3] et 6.0[4].
Références
[modifier | modifier le code]- (en) « High-level shader language (HLSL) - Win32 apps », sur learn.microsoft.com, (consulté le ).
- (en) « Fusion Industries :: Cg and HLSL FAQ :: (archivé depuis l'original) », .
- (en) « Shader Model 5.1 Objects », sur Microsoft Docs (consulté le ).
- (en) « HLSL Shader Model 6.0 », sur Microsoft Docs (consulté le ).