Shader

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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í). +more 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.

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ř. +more vytvoření ostnů na modelu dinosaura) v reálném čase.

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.

Shadery pro teselaci

S příchodem Direct3D 11 a OpenGL 3. 2 byl vykreslovací řetězec rozšířen o nové stupně realizující teselaci. +more 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).

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. +more3 a Direct3D přidalo jeho podporu ve verzi 11. Compute shader se také používá k technice zvané GPGPU.

Reference

Externí odkazy

[url=https://web. archive. +moreorg/web/20120106083710/http://www. opengl. org/wiki/Rendering_Pipeline_Overview]OpenGL Rendering Pipeline Overview[/url] (anglicky) * [url=http://msdn. microsoft. com/en-us/library/windows/desktop/ff476882(v=vs. 85). aspx]Direct3D 11 Graphics Pipeline[/url] (anglicky) * [url=http://www. songho. ca/opengl/gl_tessellation. html]OpenGL Tessellation[/url] (anglicky).

Kategorie:Počítačová grafika

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top