Limbaj de umbrire la nivel înalt - High-Level Shading Language

O scenă care conține mai multe umbrere 2D HLSL diferite. Distorsiunea statuii se realizează pur fizic, în timp ce textura cadrului dreptunghiular de lângă ea se bazează pe intensitatea culorii. Pătratul din fundal a fost transformat și rotit . Transparența parțială și reflectarea apei în prim-plan sunt adăugate de un umbră aplicată în cele din urmă întregii scene.

La nivel înalt Shader Limba sau la nivel înalt Shading Language ( HLSL ) este un drept de proprietate limbaj de umbrire dezvoltat de Microsoft pentru Direct3D 9 API pentru a mări asamblare shader limba, și a devenit limbaj de tip umbrire pentru modelul shader unificat de Direct3D 10 și mai mare.

HLSL este similar cu limbajul de umbrire GLSL utilizat cu standardul OpenGL . Este foarte asemănător cu limbajul de umbrire Nvidia Cg, deoarece a fost dezvoltat alături de el. Primele versiuni ale celor două limbi erau considerate identice, comercializate doar diferit. Umbrele HLSL pot permite creșterea profundă a vitezei și a detaliilor, precum și multe efecte speciale atât în grafica computerizată 2D, cât și în cea 3D .

Programele HLSL vin în șase forme: pixel shader (fragment GLSL), shadere vertex , shadere geometrie , shadere Compute , shadere mozaicării (Hull și shader de domeniu), și shadere ray tracing (Ray Generation shadere intersecției shadere Orice rezultat / Cea mai apropiată rezultat / Miss Shaders). Un umbrer de vârf este executat pentru fiecare vârf care este trimis de aplicație și este în primul rând responsabil pentru transformarea vârfului din spațiul obiectului în vizualizarea spațiului, generarea coordonatelor de textură și calcularea coeficienților de iluminare, cum ar fi vectorii normali, tangenți și bitangenți ai vârfului. Când un grup de vârfuri (în mod normal 3, pentru a forma un triunghi) intră prin umbrele vertexului, poziția lor de ieșire este interpolată pentru a forma pixeli în aria sa; acest proces este cunoscut sub numele de rasterizare .

Opțional, o aplicație care utilizează o interfață Direct3D 10/11/12 și hardware Direct3D 10/11/12 poate specifica, de asemenea, un shader de geometrie. Acest shader ia ca intrare câteva vârfuri ale unei primitive (triunghi / linie / punct) și folosește aceste date pentru a genera / degenera (sau în teselat ) primitive suplimentare sau pentru a schimba tipul de primitive, care sunt trimise apoi către rasterizator.

D3D11.3 și D3D12 au introdus modelul Shader 5.1 și ulterior 6.0.

Compararea modelului Shader

GPU-urile enumerate sunt hardware-ul care a acceptat mai întâi specificațiile date. În general, producătorii acceptă toate modelele de umbrire inferioară prin intermediul driverelor. Rețineți că jocurile pot pretinde că necesită o anumită versiune DirectX, dar nu necesită neapărat un GPU conform specificațiilor complete ale acelei versiuni, deoarece dezvoltatorii pot utiliza o versiune API DirectX mai mare pentru a viza hardware-ul specificațiilor Direct3D mai mici; de exemplu DirectX 9 expune caracteristici ale hardware-ului la nivel DirectX7 pe care DirectX7 nu le-a făcut, vizând conducta lor T&L cu funcție fixă.

Compararea pixel shader

Versiunea Pixel Shader 1,0 la 1,3 1.4 2.0 2.0a 2.0b 3.0 4.0
4.1
5.0
Limita de textură dependentă 4 6 8 Nelimitat 8 Nelimitat Nelimitat
Limita instrucțiunilor de textură 4 6 * 2 32 Nelimitat Nelimitat Nelimitat Nelimitat
Registrul poziției Nu Nu Nu Nu Nu da da
Sloturi pentru instrucțiuni 8 + 4 8 + 4 32 + 64 512 512 ≥ 512 ≥ 65536
Instrucțiuni executate 8 + 4 6 * 2 + 8 * 2 32 + 64 512 512 65536 Nelimitat
Indirecții de textură 4 4 4 Nelimitat 4 Nelimitat Nelimitat
Registre interpolate 2 + 4 2 + 6 2 + 8 2 + 8 2 + 8 10 32
Predicația instrucțiunii Nu Nu Nu da Nu da Nu
Registrele de intrare a indexului Nu Nu Nu Nu Nu da da
Înregistrări temporare 2 6 12 la 32 22 32 32 4096
Registre constante 8 8 32 32 32 224 16 × 4096
Flăcări arbitrare Nu Nu Nu da Nu da da
Instrucțiuni de gradient Nu Nu Nu da Nu da da
Registrul numărului de bucle Nu Nu Nu Nu Nu da da
Registrul feței (iluminare pe 2 fețe) Nu Nu Nu Nu da da da
Control dinamic al debitului Nu Nu Nu Nu Nu Da (24) Da (64)
Operatori Bitwise Nu Nu Nu Nu Nu Nu da
Numere întregi native Nu Nu Nu Nu Nu Nu da
  • PS 1.0 - Rampage 3dfx nelansat , 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.
  • Model Shader 2.0 - Radeon 9500-9800 / X300-X600 , DirectX 9.
  • Model Shader 2.0a - model optimizat GeForce FX / PCX , DirectX 9.0a.
  • Modelul Shader 2.0b - Modelul Shader Radeon X700-X850 , DirectX 9.0b.
  • Model Shader 3.0 - Radeon X1000 și GeForce 6 , DirectX 9.0c.
  • Shader Model 4.0 - Radeon HD 2000 și GeForce 8 , DirectX 10.
  • Modelul Shader 4.1 - Radeon HD 3000 și GeForce 200 , DirectX 10.1.
  • Model Shader 5.0 - Radeon HD 5000 și GeForce 400 , DirectX 11.
  • Shader Model 5.1 - GCN 1+ , Fermi +, DirectX 12 (11_0 +) cu WDDM 2.0.
  • Shader Model 6.0 - GCN 1+, Kepler +, DirectX 12 (11_0 +) cu WDDM 2.1.
  • Model Shader 6.1 - GCN 1+, Kepler +, DirectX 12 (11_0 +) cu WDDM 2.3.
  • Model Shader 6.2 - GCN 1+, Kepler +, DirectX 12 (11_0 +) cu WDDM 2.4.
  • Shader Model 6.3 - GCN 1+, Kepler +, DirectX 12 (11_0 +) cu WDDM 2.5.
  • Shader Model 6.4 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) cu WDDM 2.6.
  • Model Shader 6.5 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) cu WDDM 2.7.
  • Shader Model 6.6 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) cu WDDM 2.9.

„32 + 64” pentru instrucțiunile executate înseamnă „32 instrucțiuni de textură și 64 instrucțiuni aritmetice”.

Comparație cu umbrele de vertex

Versiune Shade Vertex VS 1.1 VS 2.0 VS 2.0a VS 3.0 VS 4.0
VS 4.1
VS 5.0
# de sloturi pentru instrucțiuni 128 256 256 ≥ 512 ≥ 65536
Numărul maxim de instrucțiuni executate 128 1024 65536 65536 Nelimitat
Predicația instrucțiunii Nu Nu da da da
Înregistrări temporare 12 12 16 32 4096
# registre constante ≥ 96 ≥ 256 256 ≥ 256 16 × 4096
Control static al debitului Nu da da da da
Control dinamic al debitului Nu Nu da da da
Adâncimea de control al fluxului dinamic N / A N / A 24 24 64
Preluarea texturii vertexului Nu Nu Nu da da
# de probe de textură N / A N / A N / A 4 128
Suport pentru instanțarea geometriei Nu Nu Nu da da
Operatori bitwise Nu Nu Nu Nu da
Numere întregi native Nu Nu Nu Nu da

Vezi si

Note de subsol

linkuri externe