Shadery

Z Multimediaexpo.cz

Shadery jsou malé programy určené pro zpracování přímo na grafické kartě. Takovéto programy se píší nejčastěji v jazycích CG (nVidia, univerzální), HLSL (Microsoft, pro DirectX), GLSL (pro OpenGL) a později jsou překladačem přeloženy do assembleru přímo pro danou grafickou kartu. V současné době jsou tři typy shaderů: vertex, pixel a geometry.

Obsah

Vertex shader

Program, který se provede na každý vrchol (vertex) vstupní geometrie. Nejčastěji provádí transformaci (násobí vrchol World, View a Projection maticemi) a výsledkem je pozice na obrazovce (screen space). Může ale také provádět různé pohyby s vrcholy, např. pro hladinu vody. Vždy ale do programu vstoupí jeden vrchol, je upraven a zase vystoupí, nelze tedy vrcholy přidávat či odebírat.

Pixel shader

Jakmile jsou vrcholy transformovány, získáme místa na obrazovce, na které je nutno nanést texturu. Tento program se provede na každý pixel na obrazovce, proto jsou tyto operace náročné na hardware a pixel shadery často jednodušší a maximálně optimalizované.

Historie shaderů

Verze DirectX Pixel shader Vertex shader
8.0 1.0 / 1.1 1.0
8.1 1.2 / 1.3 / 1.4 1.0
9.0 2.0 2.0
9.0a 2_A 2.x
9.0b 2_B 2.x
9.0c 3.0 3.0
10.0 4.0 4.0
10.1 4.1 4.1

Geometry shader

Umožňuje přidávat a odebírat vrcholy a tím upravovat geometrii. Využití např. pro vytvoření ostnů na modelu dinosaura nebo zarůstání plotu trávou v reálném čase. Tyto shadery zatím běží pouze na DirectX 10 pod Windows Vista v REF, v současnosti podporují DirectX 10 pouze grafické karty NVidia GeForce řady 8.