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
editovatProgram, 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
editovatGeometry 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
editovatPixel 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
editovatS 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
editovatCompute 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
editovat- ↑ a b c Shader Stages (Direct3D 10) (anglicky)
- ↑ Tessellation Overview (anglicky)
Externí odkazy
editovat- OpenGL Rendering Pipeline Overview (anglicky)
- Direct3D 11 Graphics Pipeline (anglicky)
- OpenGL Tessellation (anglicky)