¨====== Shader (Stínovač) ====== **Shader** je krátký program napsaný ve specializovaném jazyce (např. HLSL pro [[directx|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|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|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|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.//