Skygge sprog på højt niveau - High-Level Shading Language

Image
En scene, der indeholder flere forskellige 2D HLSL-skyggelægere. Forvrængning af statuen opnås rent fysisk, mens strukturen af ​​den rektangulære ramme ved siden af ​​den er baseret på farveintensitet. Firkanten i baggrunden er blevet omdannet og roteret . Den delvise gennemsigtighed og refleksion af vandet i forgrunden tilføjes af en skygge, der til sidst anvendes på hele scenen.

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