Shader

Shader je počítačový program slúžiaci na riadenie jednotlivých častí programovateľného grafického reťazca grafickej karty (presnejšie GPU). K tvorbe takýchto programov slúžia špecializované programovacie jazyky tzv. Shader jazyky (napríklad jazyk GLSL pre OpenGL, Cg od spoločnosti NVIDIA alebo HLSL od spoločnosti Microsoft určený pre API DirectX, Xbox a Xbox 360). Shadery sa rozdeľujú na niekoľko základných typov podľa toho, pre ktorú jednotku grafického reťazca sú určené. V súčasnosti patria medzi najdôležitejšie vertex, pixel a geometry shader. S príchodom posledných generácií grafických kariet a nových verzií grafických rozhraní (DirectX a OpenGL) sa tiež začínajú rýchlo presadzovať shadery pre realizáciu teselácie.

Vertex shader 
Program, ktorý sa vykoná na každom vrchole (vertexu) vstupnej geometrie scény. Medzi najčastejšie operácie patrí transformácia vrcholu (násobenie pohľadovou a "world" maticou). Pomocou transformácií možno však dosiahnuť aj rôznych grafických efektov - napr. simulácia pohybu vodnej hladiny. Vždy do programu vstúpi jeden vrchol, je upravený a zase vystúpi, nemožno teda vrcholy pridávať či odoberať.

Geometry shader 
Geometry shader na rozdiel od vertex shadera umožňuje pridávať alebo odoberať vrcholy a tým ovplyvňovať výslednú geometriu. Geometry shader možno využiť napríklad na generovanie jednoduchej vegetácie (trávy) na povrchu nejakého objektu či na doplnenie detailov existujúceho modelu (napr. vytvorenie ostňov na modeli dinosaura) v reálnom čase.

Pixel (fragment) shader  
Pixel shader je vykonávaný na každom pixeli rasterizovanej scény - pracuje teda s jej 2D obrazom. Medzi najčastejšie operácie patrí aplikácie textúr prípadne ďalšie modifikácie farby pixelu.

Shadery pre teseláciu 
S príchodom Direct3D 11 a OpenGL 3.2 bol vykresľovací reťazec rozšírený o nové stupne realizujúce teseláciu. Dva z týchto celkom troch stupňov sú programovateľné. Názvy príslušných shaderov sa u jednotlivých rozhraní líšia. Pre Direct3D sú to Hull-shader a Domain-shader, pre OpenGL potom Tessellation control shader (TC) a Tessellation evaluation shader (TE). Tieto shadery umožňujú meniť geometriu objektov (podobne ako geometry shader). Vďaka podpore teselácie zakotvenej priamo v hardware (GPU) je možné do scény pridať veľmi veľké množstvo detailov (a to tam, kde sú potrebné napr. podľa vzdialenosti od kamery).

Referencie

Externé odkazy 
 OpenGL Rendering Pipeline Overview (anglicky)
 Direct3D 11 Graphics Pipeline (anglicky)
 OpenGL Tessellation (anglicky)

Počítačová grafika