Język cieniowania wysokiego poziomu — High-Level Shading Language

Scena zawierająca kilka różnych shaderów 2D HLSL. Zniekształcenie posągu uzyskuje się czysto fizycznie, a faktura prostokątnej ramy obok niego opiera się na intensywności koloru. Kwadrat w tle został przekształcony i obrócony . Częściowa przezroczystość i odbicie wody na pierwszym planie są dodawane przez shader zastosowany ostatecznie do całej sceny.

Wysokiego szczebla Shader Język lub wysoka Level Shading Language ( HLSL ) jest zastrzeżonym język cieniowania opracowany przez Microsoft dla Direct3D 9 API wspomagając w ten sposób montażu modułu cieniującego język, i udał się na wymaganą cieniowania język jednolitego modelu shader Direct3D 10 i nowsze.

HLSL jest analogiczny do języka cieniowania GLSL używanego w standardzie OpenGL . Jest bardzo podobny do języka cieniowania Nvidia Cg, ponieważ został opracowany razem z nim. Wczesne wersje tych dwóch języków były uważane za identyczne, tylko sprzedawane w inny sposób. Moduły cieniujące HLSL umożliwiają znaczne zwiększenie szybkości i szczegółowości, a także wiele efektów specjalnych w grafice komputerowej 2D i 3D .

Programy HLSL występują w sześciu formach: shadery pikseli (fragment w GLSL), Vertex Shader , Geometry Shader , Compute Shader , Tesselation Shader (Hull and Domain shader ) i ray tracing shadery (Ray Generation Shader, Intersection Shader, Any Hit/Closest Hit) /Panna Shadery). Vertex Shader jest wykonywany dla każdego wierzchołka przesłanego przez aplikację i jest głównie odpowiedzialny za przekształcanie wierzchołka z przestrzeni obiektu do przestrzeni widoku, generowanie współrzędnych tekstury i obliczanie współczynników oświetlenia, takich jak wektory normalny, styczny i bitangent. Kiedy grupa wierzchołków (zwykle 3, tworząc trójkąt) przechodzi przez Vertex Shader, ich pozycja wyjściowa jest interpolowana, aby utworzyć piksele w jej obszarze; proces ten jest znany jako rasteryzacja .

Opcjonalnie aplikacja korzystająca z interfejsu Direct3D 10/11/12 i sprzętu Direct3D 10/11/12 może również określać shader geometrii. Ten moduł cieniujący przyjmuje jako dane wejściowe pewne wierzchołki prymitywu (trójkąt/linia/punkt) i używa tych danych do generowania/degenerowania (lub tesselacji ) dodatkowych prymitywów lub do zmiany typu prymitywów, z których każdy jest następnie wysyłany do rasteryzatora.

D3D11.3 i D3D12 wprowadziły Shader Model 5.1 i późniejsze wersje 6.0.

Porównanie modeli shaderów

Wymienione procesory graficzne to sprzęt, który jako pierwszy obsługiwał dane specyfikacje. Producenci zazwyczaj obsługują wszystkie niższe modele cieniowania za pośrednictwem sterowników. Zwróć uwagę, że gry mogą twierdzić, że wymagają określonej wersji DirectX, ale niekoniecznie wymagają procesora graficznego zgodnego z pełną specyfikacją tej wersji, ponieważ programiści mogą używać wyższej wersji interfejsu API DirectX, aby kierować sprzęt o niższej specyfikacji Direct3D; na przykład DirectX 9 ujawnia funkcje sprzętu na poziomie DirectX7, których nie posiadał DirectX7, kierując się ich stałymi funkcjami potoku T&L.

Porównanie shaderów pikseli

Wersja Pixel Shader 1,0 do 1,3 1,4 2,0 2.0a 2.0b 3,0 4,0
4,1
5,0
Zależny limit tekstury 4 6 8 bez limitu 8 bez limitu bez limitu
Limit instrukcji tekstury 4 6*2 32 bez limitu bez limitu bez limitu bez limitu
Rejestr pozycji Nie Nie Nie Nie Nie tak tak
Gniazda instrukcji 8+4 8+4 32 + 64 512 512 ≥ 512 ≥ 65536
Wykonane instrukcje 8+4 6*2+8*2 32 + 64 512 512 65536 bez limitu
Pośrednie tekstury 4 4 4 bez limitu 4 bez limitu bez limitu
Rejestry interpolowane 2 + 4 2 + 6 2 + 8 2 + 8 2 + 8 10 32
Przewidywanie instrukcji Nie Nie Nie tak Nie tak Nie
Indeksowe rejestry wejściowe Nie Nie Nie Nie Nie tak tak
Rejestry temp 2 6 12 do 32 22 32 32 4096
Rejestry stałe 8 8 32 32 32 224 16×4096
Dowolne swizzling Nie Nie Nie tak Nie tak tak
Gradient instrukcje Nie Nie Nie tak Nie tak tak
Rejestr liczników pętli Nie Nie Nie Nie Nie tak tak
Rejestr twarzy (oświetlenie dwustronne) Nie Nie Nie Nie tak tak tak
Dynamiczna kontrola przepływu Nie Nie Nie Nie Nie Tak (24) Tak (64)
Operatory bitowe Nie Nie Nie Nie Nie Nie tak
Natywne liczby całkowite Nie Nie Nie Nie Nie Nie tak
  • PS 1.0Nieopublikowany Rampage 3dfx , DirectX 8.
  • PS 1.1GeForce 3 , DirectX 8.
  • PS 1.23Dlabs Wildcat wiceprezes, DirectX 8.0a.
  • PS 1.3GeForce 4 Ti , DirectX 8.0a.
  • PS 1.4Radeon 8500-9250 , Matrox Parhelia , DirectX 8.1.
  • Shader Model 2.0Radeon 9500-9800/X300-X600 , DirectX 9.
  • Shader Model 2.0a — model zoptymalizowany pod kątem GeForce FX/PCX , DirectX 9.0a.
  • Model cieniowania 2.0bmodel cieniowania Radeon X700-X850 , DirectX 9.0b.
  • Shader Model 3.0Radeon X1000 i GeForce 6 , DirectX 9.0c.
  • Shader Model 4.0Radeon HD 2000 i GeForce 8 , DirectX 10.
  • Shader Model 4.1Radeon HD 3000 i GeForce 200 , DirectX 10.1.
  • Shader Model 5.0Radeon HD 5000 i GeForce 400 , DirectX 11.
  • Shader Model 5.1GCN 1+ , Fermi+, DirectX 12 (11_0+) z WDDM 2.0.
  • Shader Model 6.0 — GCN 1+, Kepler+, DirectX 12 (11_0+) z WDDM 2.1.
  • Shader Model 6.1 — GCN 1+, Kepler+, DirectX 12 (11_0+) z WDDM 2.3.
  • Shader Model 6.2 — GCN 1+, Kepler+, DirectX 12 (11_0+) z WDDM 2.4.
  • Shader Model 6.3 — GCN 1+, Kepler+, DirectX 12 (11_0+) z WDDM 2.5.
  • Shader Model 6.4 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) z WDDM 2.6.
  • Shader Model 6.5 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) z WDDM 2.7.
  • Shader Model 6.6 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) z WDDM 2.9.

„32 + 64” dla instrukcji wykonywanych oznacza „32 instrukcje tekstur i 64 instrukcje arytmetyczne”.

Porównanie Vertex Shader

Wersja Vertex Shader W porównaniu z 1.1 VS 2.0 VS 2.0a VS 3.0 VS 4.0
VS 4.1
VS 5.0
Liczba miejsc na instrukcje 128 256 256 ≥ 512 ≥ 65536
Maksymalna liczba wykonanych instrukcji 128 1024 65536 65536 bez limitu
Przewidywanie instrukcji Nie Nie tak tak tak
Rejestry temp 12 12 16 32 4096
# rejestry stałe ≥ 96 ≥ 256 256 ≥ 256 16×4096
Statyczna kontrola przepływu Nie tak tak tak tak
Dynamiczna kontrola przepływu Nie Nie tak tak tak
Głębokość dynamicznej kontroli przepływu Nie dotyczy Nie dotyczy 24 24 64
Pobieranie tekstury wierzchołków Nie Nie Nie tak tak
# próbników tekstur Nie dotyczy Nie dotyczy Nie dotyczy 4 128
Geometria Instancing wsparcie Nie Nie Nie tak tak
Operatory bitowe Nie Nie Nie Nie tak
Natywne liczby całkowite Nie Nie Nie Nie tak

Zobacz też

Przypisy

Linki zewnętrzne