Skygge sprog på højt niveau - High-Level Shading Language
Den højt plan Shader sprog eller højt plan Shading Sprog ( HLSL ) er et proprietært skygge sprog udviklet af Microsoft for Direct3D 9 API til at forøge shader forsamling sprog, og gik på at blive den nødvendige skygge sprog for det forenede shader model Direct3D 10 og højere.
HLSL er analog til den GLSL skygge sprog, der anvendes med OpenGL -standarden. Det ligner meget Nvidia Cg-skyggesproget, da det blev udviklet sammen med det. Tidlige versioner af de to sprog blev betragtet som identiske, kun markedsført forskelligt. HLSL-skyggelægere kan muliggøre dyb hastighed og detaljer øges såvel som mange specielle effekter i både 2D og 3D computergrafik .
HLSL-programmer findes i seks former: pixel shaders (fragment i GLSL), vertex shaders , geometry shaders , compute shaders , tessellation shaders (Hull and Domain shaders) og raytracing shaders (Ray Generation Shaders, Intersection Shaders, Any Hit / Closest Hit / Miss Shaders). En vertex shader udføres for hvert toppunkt, der indsendes af applikationen, og er primært ansvarlig for at omdanne toppunktet fra objektrum til at se plads, generere teksturkoordinater og beregne belysningskoefficienter såsom toppunktets normale, tangente og bitangente vektorer. Når en gruppe af hjørner (normalt 3, for at danne en trekant) kommer gennem vertex shader, interpoleres deres outputposition for at danne pixels inden for dets område; denne proces er kendt som rasterisering .
Eventuelt kan et program, der bruger en Direct3D 10/11/12 interface og Direct3D 10/11/12 hardware, også angive en geometri-skygge. Denne skygge tager som input nogle hjørner af en primitiv (trekant / linje / punkt) og bruger disse data til at generere / degenerere (eller tessellate ) yderligere primitiver eller til at ændre typen af primitiver, som hver derefter sendes til rasterizer.
D3D11.3 og D3D12 introducerede Shader Model 5.1 og senere 6.0.
Shader model sammenligning
De nævnte GPU'er er den hardware, der først understøttede de givne specifikationer. Producenter understøtter generelt alle modeller med lavere skygge gennem drivere. Bemærk, at spil muligvis hævder at kræve en bestemt DirectX-version, men ikke nødvendigvis kræver en GPU, der overholder den fulde specifikation for denne version, da udviklere kan bruge en højere DirectX API-version til at målrette hardware med lavere Direct3D-specifikation; for eksempel udsætter DirectX 9 funktioner på DirectX7-niveau hardware, som DirectX7 ikke gjorde, målrettet mod deres faste T & L-pipeline.
Pixel shader-sammenligning
| Pixel shader-version | 1,0 til 1,3 | 1.4 | 2.0 | 2,0a | 2,0b | 3.0 | 4,0 4,1 5,0 |
|---|---|---|---|---|---|---|---|
| Afhængig teksturgrænse | 4 | 6 | 8 | Ubegrænset | 8 | Ubegrænset | Ubegrænset |
| Begrænsning af teksturinstruktion | 4 | 6 * 2 | 32 | Ubegrænset | Ubegrænset | Ubegrænset | Ubegrænset |
| Positionsregister | Ingen | Ingen | Ingen | Ingen | Ingen | Ja | Ja |
| Instruktions slots | 8 + 4 | 8 + 4 | 32 + 64 | 512 | 512 | ≥ 512 | ≥ 65536 |
| Udførte instruktioner | 8 + 4 | 6 * 2 + 8 * 2 | 32 + 64 | 512 | 512 | 65536 | Ubegrænset |
| Teksturindirektioner | 4 | 4 | 4 | Ubegrænset | 4 | Ubegrænset | Ubegrænset |
| Interpolerede registre | 2 + 4 | 2 + 6 | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
| Instruktionsprædikation | Ingen | Ingen | Ingen | Ja | Ingen | Ja | Ingen |
| Indeksregistreringer | Ingen | Ingen | Ingen | Ingen | Ingen | Ja | Ja |
| Tempregistre | 2 | 6 | 12 til 32 | 22 | 32 | 32 | 4096 |
| Konstant registre | 8 | 8 | 32 | 32 | 32 | 224 | 16 × 4096 |
| Vilkårlig svimmel | Ingen | Ingen | Ingen | Ja | Ingen | Ja | Ja |
| Gradientinstruktioner | Ingen | Ingen | Ingen | Ja | Ingen | Ja | Ja |
| Loop count register | Ingen | Ingen | Ingen | Ingen | Ingen | Ja | Ja |
| Ansigtsregister (2-sidet belysning) | Ingen | Ingen | Ingen | Ingen | Ja | Ja | Ja |
| Dynamisk flowkontrol | Ingen | Ingen | Ingen | Ingen | Ingen | Ja (24) | Ja (64) |
| Bitvise operatører | Ingen | Ingen | Ingen | Ingen | Ingen | Ingen | Ja |
| Indfødte heltal | Ingen | Ingen | Ingen | Ingen | Ingen | Ingen | Ja |
- PS 1.0 - Ikke frigivet 3dfx Rampage, DirectX 8.
- PS 1.1 - GeForce 3 , DirectX 8.
- PS 1.2 - 3Dlabs Wildcat VP, DirectX 8.0a.
- PS 1.3 - GeForce 4 Ti , DirectX 8.0a.
- PS 1.4 - Radeon 8500-9250 , Matrox Parhelia , DirectX 8.1.
- Shader Model 2.0 - Radeon 9500-9800 / X300-X600 , DirectX 9.
- Shader Model 2.0a - GeForce FX / PCX- optimeret model, DirectX 9.0a.
- Shader Model 2.0b - Radeon X700-X850 shader-model, DirectX 9.0b.
- Shader Model 3.0 - Radeon X1000 og GeForce 6 , DirectX 9.0c.
- Shader Model 4.0 - Radeon HD 2000 og GeForce 8 , DirectX 10.
- Shader Model 4.1 - Radeon HD 3000 og GeForce 200 , DirectX 10.1.
- Shader Model 5.0 - Radeon HD 5000 og GeForce 400 , DirectX 11.
- Shader Model 5.1 - GCN 1+ , Fermi +, DirectX 12 (11_0 +) med WDDM 2.0.
- Shader Model 6.0 - GCN 1+, Kepler +, DirectX 12 (11_0 +) med WDDM 2.1.
- Shader Model 6.1 - GCN 1+, Kepler +, DirectX 12 (11_0 +) med WDDM 2.3.
- Shader Model 6.2 - GCN 1+, Kepler +, DirectX 12 (11_0 +) med WDDM 2.4.
- Shader Model 6.3 - GCN 1+, Kepler +, DirectX 12 (11_0 +) med WDDM 2.5.
- Shader Model 6.4 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) med WDDM 2.6.
- Shader Model 6.5 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) med WDDM 2.7.
- Shader Model 6.6 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) med WDDM 2.9.
"32 + 64" for udførte instruktioner betyder "32 teksturinstruktioner og 64 aritmetiske instruktioner."
Vertex shader-sammenligning
| Vertex shader version | VS 1.1 | VS 2.0 | VS 2.0a | VS 3.0 | VS 4.0 VS 4.1 VS 5.0 |
|---|---|---|---|---|---|
| # instruktionsspor | 128 | 256 | 256 | ≥ 512 | ≥ 65536 |
| Maks. Antal instruktioner udført | 128 | 1024 | 65536 | 65536 | Ubegrænset |
| Instruktionsprædikation | Ingen | Ingen | Ja | Ja | Ja |
| Tempregistre | 12 | 12 | 16 | 32 | 4096 |
| # konstante registre | ≥ 96 | ≥ 256 | 256 | ≥ 256 | 16 × 4096 |
| Statisk flowkontrol | Ingen | Ja | Ja | Ja | Ja |
| Dynamisk flowkontrol | Ingen | Ingen | Ja | Ja | Ja |
| Dynamisk flowkontroldybde | Ikke relevant | Ikke relevant | 24 | 24 | 64 |
| Hentning af hvirvelstruktur | Ingen | Ingen | Ingen | Ja | Ja |
| # teksturprøver | Ikke relevant | Ikke relevant | Ikke relevant | 4 | 128 |
| Understøttelse af geometri | Ingen | Ingen | Ingen | Ja | Ja |
| Bitvise operatører | Ingen | Ingen | Ingen | Ingen | Ja |
| Indfødte heltal | Ingen | Ingen | Ingen | Ingen | Ja |
Se også
Fodnoter
eksterne links
- Programmeringsvejledning til HLSL hos Microsoft Docs
- Introduktion til DirectX 9 High Level Shading Language , (ATI) AMD-udviklercentral
- Riemers HLSL Introduktion og vejledning (inkluderer prøvekode)
- HLSL Introduktion
- DirectX Intermediate Language (DXIL) specifikation