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
upraviť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ť.[1]
Geometry shader
upraviť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.[1]
Pixel (fragment) shader
upraviť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.[1]
Shadery pre teseláciu
upraviť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).[2]
Referencie
upraviť- ↑ a b c Shader Stages (Direct3D 10) (anglicky)
- ↑ Tessellation Overview (anglicky)
- Tento článok je čiastočný alebo úplný preklad článku Shader na českej Wikipédii.
Externé odkazy
upraviť- OpenGL Rendering Pipeline Overview Archivované 2012-01-06 na Wayback Machine (anglicky)
- Direct3D 11 Graphics Pipeline (anglicky)
- OpenGL Tessellation (anglicky)