Shader

Shader je počítačový program sloužící k řízení jednotlivých částí programovatelného grafického řetězce grafické karty (přesněji GPU). K tvorbě takových programů slouží specializované programovací jazyky tzv. shader jazyky (například jazyk GLSL pro OpenGL, Cg od společnosti NVIDIA nebo HLSL od společnosti Microsoft určený pro API DirectX, Xbox a Xbox 360). Shadery se rozdělují na několik základních typů podle toho, pro kterou jednotku grafického řetězce jsou určeny. V současnosti patří mezi nejdůležitější vertex, pixel a geometry shader. S příchodem posledních generací grafických karet a nových verzí grafických rozhraní (DirectX a OpenGL) se rovněž začínají rychle prosazovat shadery pro realizaci teselace.

Vertex shader

Program, který se provede na každém vrcholu (vertexu) vstupní geometrie scény. Mezi nejčastější operace patří transformace vrcholu (násobení pohledovou a "world" maticí). Pomocí transformací lze však dosáhnout i různých grafických efektů — např. simulace pohybu vodní hladiny. Vždy do programu vstoupí jeden vrchol, je upraven a zase vystoupí, nelze tedy vrcholy přidávat či odebírat.[1]

Geometry shader

Geometry shader na rozdíl od vertex shaderu umožňuje přidávat nebo odebírat vrcholy a tím ovlivňovat výslednou geometrii. Geometry shader lze využít například pro generování jednoduché vegetace (trávy) na povrchu nějakého objektu či k doplnění detailů existujícího modelu (např. vytvoření ostnů na modelu dinosaura) v reálném čase.[1]

Pixel (fragment) shader

Pixel shader je prováděn na každém pixelu rasterizované scény — pracuje tedy s jejím 2D obrazem. Mezi nejčastější operace patří aplikace textur případně další modifikace barvy pixelu.[1]

Shadery pro teselaci

S příchodem Direct3D 11 a OpenGL 3.2 byl vykreslovací řetězec rozšířen o nové stupně realizující teselaci. Dva z těchto celkem tří stupňů jsou programovatelné. Názvy příslušných shaderů se u jednotlivých rozhraní liší. Pro Direct3D jsou to Hull-shader a Domain-shader, pro OpenGL potom Tessellation control shader (TC) a Tessellation evaluation shader (TE). Tyto shadery umožňují měnit geometrii objektů (podobně jako geometry shader). Díky podpoře teselace zakotvené přímo v hardware (GPU) je možné do scény přidat velmi velké množství detailů (a to tam kde jsou potřeba např. dle vzdálenosti od kamery).[2]

Compute shader

Compute shader slouží k realizaci a možnému urychlení obecných algoritmů na grafickém procesoru. Ve specifikaci OpenGL se poprvé objevil ve verzi 4.3 a Direct3D přidalo jeho podporu ve verzi 11. Compute shader se také používá k technice zvané GPGPU.

Reference

Externí odkazy

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.