Přeskočit na obsah

Shader

Z Wikipedie, otevřené encyklopedie
Další významy jsou uvedeny na stránceShader (rozcestník).

Shaderjepočítačový programsloužící k řízení jednotlivých částíprogramovatelného grafického řetězcegrafické karty(přesnějiGPU). K tvorbě takových programů slouží specializovanéprogramovací jazykytzv.shader jazyky(například jazykGLSLproOpenGL,Cgod společnostiNVIDIAneboHLSLod společnostiMicrosofturčený pro APIDirectX,XboxaXbox 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 realizaciteselace.

Vertex shader

[editovat|editovat zdroj]

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

[editovat|editovat zdroj]

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

[editovat|editovat zdroj]

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

Shadery pro teselaci

[editovat|editovat zdroj]

S příchodemDirect3D11 aOpenGL3.2 bylvykreslovací řetězecrozšíř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 toHull-shaderaDomain-shader,pro OpenGL potomTessellation control shader(TC) aTessellation evaluation shader(TE). Tyto shadery umožňují měnit geometrii objektů (podobně jako geometry shader). Díky podpoře teselace zakotvené přímo vhardware(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

[editovat|editovat zdroj]

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

Externí odkazy

[editovat|editovat zdroj]