Stínovací jazyk na vysoké úrovni - High-Level Shading Language

Scéna obsahující několik různých shaderů 2D HLSL. Zkreslení sochy je dosaženo čistě fyzicky, zatímco struktura obdélníkového rámečku vedle něj je založena na intenzitě barev. Čtverec v pozadí byl transformován a otočen . Částečnou průhlednost a odraz vody v popředí přidává shader aplikovaný nakonec na celou scénu.

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