# High-Level Shader Language

L'High-Level Shader Language o High-Level Shading Language (HLSL) és un llenguatge d'ombrejat propietari desenvolupat per Microsoft per a l'API Direct3D 9 per augmentar el llenguatge d'assemblatge de shader, i es va convertir en el llenguatge d'ombrejat necessari. per al model d'ombres unificat de Direct3D 10 i superior.
HLSL és anàleg al llenguatge d'ombrejat GLSL utilitzat amb l'estàndard OpenGL. És molt semblant al llenguatge d'ombrejat Nvidia Cg, ja que es va desenvolupar al costat d'ell. Les primeres versions dels dos idiomes es consideraven idèntiques, només comercialitzades de manera diferent. Els shaders HLSL poden permetre augments profunds de velocitat i detall, així com molts efectes especials tant en gràfics per ordinador en 2D com en 3D.
Els programes HLSL es presenten en sis formes: ombrejats de píxels (fragment en GLSL), ombrejats de vèrtex, ombrejats de geometria, ombrejats de càlcul, ombrejats de tessel·lació (sombreadors Hull i Domain) i ombrejats de traçat de raigs (Ray Generation Shaders, Intersection Shaders, Any Hit/Closest Hit). /Miss Shaders). S'executa un sombreador de vèrtex per a cada vèrtex enviat per l'aplicació, i és el principal responsable de transformar el vèrtex de l'espai objecte a l'espai de visualització, generar coordenades de textura i calcular coeficients d'il·luminació com els vectors normals, tangents i bitangents del vèrtex. Quan un grup de vèrtexs (normalment 3, per formar un triangle) passen pel vertex shader, la seva posició de sortida s'interpola per formar píxels dins de la seva àrea; aquest procés es coneix com a rasterització.
Opcionalment, una aplicació que utilitzi una interfície Direct3D 10/11/12 i un maquinari Direct3D 10/11/12 també pot especificar un shader de geometria. Aquest shader pren com a entrada alguns vèrtexs d'una primitiva (triangle/línia/punt) i utilitza aquestes dades per generar/degenerar (o tessel·lar) primitives addicionals o per canviar el tipus de primitives, que després s'envien al rasteritzador.
D3D11.3 i D3D12 van introduir Shader Model 5.1 i posteriorment 6.0.

## Comparació de models shader

Les GPU enumerades són el maquinari que primer va donar suport a les especificacions donades. Els fabricants generalment admeten tots els models d'ombra inferior mitjançant controladors. Tingueu en compte que els jocs poden afirmar que requereixen una versió de DirectX determinada, però no necessàriament requereixen una GPU que s'ajusti a l'especificació completa d'aquesta versió, ja que els desenvolupadors poden utilitzar una versió de l'API de DirectX superior per orientar-se al maquinari amb especificacions Direct3D inferiors; per exemple, DirectX 9 exposa característiques del maquinari de nivell DirectX7 que DirectX7 no va fer, dirigint-se al seu pipeline T&L de funció fixa.

## Referències

* ↑ «Writing HLSL Shaders in Direct3D 9» (en anglès). Microsoft Docs. [Consulta: 22 febrer 2021].
* ↑ «High-level shader language (HLSL)» (en anglès). Microsoft Docs. [Consulta: 22 febrer 2021].
* ↑ «[https://developer.download.nvidia.com/assets/gamedev/docs/EG_04_ProgrammingLanguages.pdf Programming the GPU: HighHigh--Level Shading LanguagesLevel Shading Languages]» (en anglès). [Consulta: 21 octubre 2023].
* ↑ «Fusion Industries :: Cg and HLSL FAQ ::» (en anglès), 24-08-2012. Arxivat de l'original el August 24, 2012.
* ↑ «Difference between Spir-v, GLSL and HLSL» (en anglès). [Consulta: 21 octubre 2023].
* ↑ «Shader Model 5.1 Objects» (en anglès). Microsoft Docs. [Consulta: 22 febrer 2021].
* ↑ «HLSL Shader Model 6.0» (en anglès). Microsoft Docs. [Consulta: 22 febrer 2021].