Obsah
¨
Shader (Stínovač)
Shader je krátký program napsaný ve specializovaném jazyce (např. HLSL pro DirectX nebo GLSL pro OpenGL), který grafická karta používá k vykreslení scény. Na rozdíl od běžných programů, které běží na procesoru (CPU) postupně, shadery běží na tisících jader grafického procesoru (GPU) současně, což umožňuje plynulé vykreslování složité 3D grafiky v reálném čase.
Hlavní typy shaderů
Moderní grafika vzniká v tzv. grafické rourě (Graphics Pipeline), kde na sebe různé typy shaderů navazují:
1. Vertex Shader (Vrcholový)
Zpracovává jednotlivé body (vrcholy) 3D modelů. Stará se o jejich pozici v prostoru, rotaci a deformaci.
- Příklad: Když se ve hře postava hýbe, vertex shader vypočítává, jak se mají pohnout body jejího brnění.
2. Geometry Shader (Geometrický)
Dokáže vytvářet novou geometrii přímo za běhu. Může vzít jeden bod a vytvořit z něj trojúhelník nebo jiný tvar.
- Příklad: Generování částic deště nebo trávy kolem postavy.
3. Pixel / Fragment Shader (Pixelový)
Nejdůležitější pro výsledný vzhled. Počítá barvu každého bodu na obrazovce. Bere v úvahu světlo, textury a stíny.
- Příklad: Výpočet toho, jak se leskne mokrý asfalt nebo jakou barvu má kůže postavy pod pouliční lampou.
Vývoj shaderů: Od fixních k programovatelným
- Fixní pipeline (Před rokem 2000): Grafické karty měly napevno dané funkce. Vývojář mohl jen „zapnout světlo“, ale nemohl ovlivnit, jak přesně se vypočítá.
- Programovatelné shadery: Přišly s DirectX 8 a 9. Vývojáři dostali možnost psát vlastní kód pro grafickou kartu. To umožnilo vznik realistických materiálů (voda, kovy, kůže) a vizuální revoluci ve hrách.
- Unified Shader Model: Moderní architektura, kde GPU nemá oddělená jádra pro vrcholy a pixely. Každé jádro (Stream procesor) může spustit jakýkoliv typ shaderu podle aktuální potřeby.
Praktické využití shaderů
Kromě her se shadery používají v mnoha dalších oblastech:
- Filmové efekty: CGI ve filmech využívá extrémně komplexní shadery pro simulaci ohně, vody a vlasů.
- Post-processing: Filtry ve videu nebo v aplikacích jako Instagram jsou ve skutečnosti pixelové shadery, které mění barvy hotového obrazu.
- GPGPU: Využití shaderů pro vědecké výpočty, simulace počasí nebo trénování umělé inteligence (GPT).
Jazyky pro psaní shaderů
Podobně jako se programy píší v C++ nebo Pythonu, shadery mají své jazyky:
| Jazyk | Rozhraní (API) | Vývojář |
|---|---|---|
| HLSL | DirectX | Microsoft |
| GLSL | OpenGL / Vulkan | Khronos Group |
| Metal Shading Language | Metal | Apple |
| Cg | Multiplatformní | NVIDIA (ukončený vývoj) |
Související pojmy: DirectX, GPU, Pixel, Ray Tracing, Post-processing, OpenGL.
