Stínovací jazyk na vysoké úrovni - High-Level Shading Language
High-Level Shader Language nebo High-Level stínování Language ( HLSL ) je proprietární stínování jazyk vyvinutý společností Microsoft pro Direct3D 9 rozhraní API, aby se zvýšil shaderu montážní jazyk, a pokračoval se stát požadované stínování jazyka k jednotnému shader modelu Direct3D 10 a vyšší.
HLSL je analogický se stínovacím jazykem GLSL používaným se standardem OpenGL . Je velmi podobný stínovacímu jazyku Nvidia Cg, jak byl vyvinut spolu s ním. Rané verze těchto dvou jazyků byly považovány za identické, prodávaly se pouze odlišně. Shadery HLSL umožňují hluboké zvýšení rychlosti a detailů a také mnoho speciálních efektů v 2D i 3D počítačové grafice .
HLSL programy přicházejí v šesti formách: pixel shadery (fragment ve GLSL), shaders vrcholu , geometrie shadery , výpočetně stínování , mozaikování shadery (Hull a doména shadery) a ray tracing stínování (Ray Generation clon křižovatky clon jakýkoliv pozitivní nález / Nejbližší Hit (Slečna Shadersová). Pro každý vrchol, který aplikace odešle, se provede shader vrcholů, který je primárně zodpovědný za transformaci vrcholu z prostoru objektů do zobrazení prostoru, generování souřadnic textury a výpočet světelných koeficientů, jako jsou normální, tangentní a bitangentní vektory vrcholu. Když skupina vrcholů (obvykle 3, pro vytvoření trojúhelníku) prochází vrcholným shaderem, jejich výstupní pozice je interpolována, aby vytvořila pixely v její oblasti; tento proces se nazývá rasterizace .
Volitelně může aplikace využívající rozhraní Direct3D 10/11/12 a hardware Direct3D 10/11/12 specifikovat shader geometrie. Tento shader bere jako vstup některé vrcholy primitiva (trojúhelník / čára / bod) a používá tato data ke generování / degeneraci (nebo mozaikování ) dalších primitiv nebo ke změně typu primitiv, které jsou poté odeslány do rasterizátoru.
D3D11.3 a D3D12 představily Shader Model 5.1 a novější 6.0.
Porovnání modelu shaderu
Uvedené GPU jsou hardware, který jako první podporoval dané specifikace. Výrobci obecně podporují všechny modely nižšího shaderu prostřednictvím ovladačů. Upozorňujeme, že hry mohou vyžadovat určitou verzi DirectX, ale nemusí nutně vyžadovat GPU odpovídající úplné specifikaci této verze, protože vývojáři mohou k cílení na hardware s nižšími Direct3D-spec použít vyšší verzi rozhraní DirectX API; například DirectX 9 odhaluje funkce hardwaru na úrovni DirectX7, které DirectX7 neudělal, a zaměřuje se na jejich potrubí T&L s pevnou funkcí.
Porovnání shaderu pixelů
Verze shaderu pixelů | 1,0 až 1,3 | 1.4 | 2.0 | 2,0a | 2,0b | 3.0 | 4,0 4,1 5,0 |
---|---|---|---|---|---|---|---|
Závislý limit textury | 4 | 6 | 8 | Neomezený | 8 | Neomezený | Neomezený |
Limit instrukce textury | 4 | 6 * 2 | 32 | Neomezený | Neomezený | Neomezený | Neomezený |
Registr pozic | Ne | Ne | Ne | Ne | Ne | Ano | Ano |
Instrukční sloty | 8 + 4 | 8 + 4 | 32 + 64 | 512 | 512 | ≥ 512 | ≥ 65536 |
Provedené pokyny | 8 + 4 | 6 * 2 + 8 * 2 | 32 + 64 | 512 | 512 | 65536 | Neomezený |
Indukce textury | 4 | 4 | 4 | Neomezený | 4 | Neomezený | Neomezený |
Interpolované registry | 2 + 4 | 2 + 6 | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
Predikce instrukce | Ne | Ne | Ne | Ano | Ne | Ano | Ne |
Rejstřík vstupních registrů | Ne | Ne | Ne | Ne | Ne | Ano | Ano |
Temp registry | 2 | 6 | 12 až 32 | 22 | 32 | 32 | 4096 |
Konstantní registry | 8 | 8 | 32 | 32 | 32 | 224 | 16 × 4096 |
svévolné závislé míchání | Ne | Ne | Ne | Ano | Ne | Ano | Ano |
Pokyny k přechodu | Ne | Ne | Ne | Ano | Ne | Ano | Ano |
Registrovat počet smyček | Ne | Ne | Ne | Ne | Ne | Ano | Ano |
Registr obličeje (2stranné osvětlení) | Ne | Ne | Ne | Ne | Ano | Ano | Ano |
Dynamické řízení toku | Ne | Ne | Ne | Ne | Ne | Ano (24) | Ano (64) |
Bitové operátory | Ne | Ne | Ne | Ne | Ne | Ne | Ano |
Nativní celá čísla | Ne | Ne | Ne | Ne | Ne | Ne | Ano |
- PS 1.0 - nevydané 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 - model optimalizovaný pro GeForce FX / PCX , DirectX 9.0a.
- Shader Model 2.0b - shaderový model Radeon X700-X850 , DirectX 9.0b.
- Shader Model 3.0 - Radeon X1000 a GeForce 6 , DirectX 9.0c.
- Shader Model 4.0 - Radeon HD 2000 a GeForce 8 , DirectX 10.
- Shader Model 4.1 - Radeon HD 3000 a GeForce 200 , DirectX 10.1.
- Shader Model 5.0 - Radeon HD 5000 a GeForce 400 , DirectX 11.
- Shader Model 5.1 - GCN 1+ , Fermi +, DirectX 12 (11_0 +) s WDDM 2.0.
- Shader Model 6.0 - GCN 1+, Kepler +, DirectX 12 (11_0 +) s WDDM 2.1.
- Shader Model 6.1 - GCN 1+, Kepler +, DirectX 12 (11_0 +) s WDDM 2.3.
- Shader Model 6.2 - GCN 1+, Kepler +, DirectX 12 (11_0 +) s WDDM 2.4.
- Shader Model 6.3 - GCN 1+, Kepler +, DirectX 12 (11_0 +) s WDDM 2.5.
- Shader Model 6.4 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) s WDDM 2.6.
- Shader Model 6.5 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) s WDDM 2.7.
- Shader Model 6.6 - GCN 1+, Kepler +, Skylake +, DirectX 12 (11_0 +) s WDDM 2.9.
„32 + 64“ pro provedené instrukce znamená „32 instrukcí textury a 64 aritmetických instrukcí.“
Porovnání shaderu vrcholů
Verze shaderu vrcholů | VS 1.1 | VS 2.0 | VS 2.0a | VS 3.0 | VS 4.0 VS 4.1 VS 5.0 |
---|---|---|---|---|---|
# instrukčních slotů | 128 | 256 | 256 | ≥ 512 | ≥ 65536 |
Max. Počet provedených pokynů | 128 | 1024 | 65536 | 65536 | Neomezený |
Predikce instrukce | Ne | Ne | Ano | Ano | Ano |
Temp registry | 12 | 12 | 16 | 32 | 4096 |
# konstantní registry | ≥ 96 | ≥ 256 | 256 | ≥ 256 | 16 × 4096 |
Statické řízení toku | Ne | Ano | Ano | Ano | Ano |
Dynamické řízení toku | Ne | Ne | Ano | Ano | Ano |
Hloubka dynamického řízení toku | N / A | N / A | 24 | 24 | 64 |
Načtení textury vrcholů | Ne | Ne | Ne | Ano | Ano |
# vzorkovačů textur | N / A | N / A | N / A | 4 | 128 |
Podpora vytváření geometrie | Ne | Ne | Ne | Ano | Ano |
Bitové operátory | Ne | Ne | Ne | Ne | Ano |
Nativní celá čísla | Ne | Ne | Ne | Ne | Ano |
Viz také
Poznámky pod čarou
externí odkazy
- Průvodce programováním pro HLSL v Microsoft Docs
- Úvod do DirectX 9 High Level Shading Language , (ATI) AMD developer central
- Riemer's HLSL Introduction & Tutorial (obsahuje ukázkový kód)
- HLSL Úvod
- Specifikace DirectX Intermediate Language (DXIL)