Co je stínovací jazyk OpenGL®?
Stínovací jazyk OpenGL® (GLSL) je počítačový programovací jazyk navržený speciálně pro manipulaci a ovládání trojrozměrné (3D) grafiky během procesu vykreslování přímo v grafické grafické jednotce (GPU) grafické karty pomocí knihoven OpenGL®. Stínovací jazyk OpenGL® v podstatě poskytuje programátorům přímý přístup k 3D geometrii a vykreslování na nejnižší možné úrovni, aniž by ve skutečnosti musel psát rutiny sestavovacího jazyka na rozhraní s hardwarem GPU. Použitím stínovacího jazyka OpenGL® lze implementovat a optimalizovat efekty, jako jsou procedurálně generované textury a geometrie, přímo v GPU, což urychluje proces vykreslování. Umožňuje také účinně implementovat složitější funkce, jako jsou animace nebo speciální efekty, bez režie kódu vyšší úrovně. Stínovací jazyk je GPU kompilován do spustitelného kódu, což znamená, že specifické grafické implementace a kompilátory mohou být navrženy pro jednotlivé grafické karty, což zvyšuje výkonnost při používání různých shaderů.
Pro všechny praktické účely je stínovací jazyk OpenGL® plně implementovaným programovacím jazykem, který napodobuje syntaxi programovacího jazyka C téměř ve všech směrech, s výjimkou proměnných typu ukazatele a některých směrnic preprocesoru. Uživatelem definované funkce, proměnné a logické větvení a příkazy smyčky jsou podporovány, což umožňuje psát plně realizované programy pomocí pouze shaderu a poskytovat úroveň abstrakce, která je přenosná napříč různými operačními systémy a hardwarovými konfiguracemi. Jakmile je program shaderu dokončen, je předán GPU, kde je zkompilován a proveden podle potřeby během procesu vykreslování.
Program napsaný v stínovacím jazyce OpenGL® je nakonec předán GPU, kde může být kompilován hardwarem nebo ovladači vytvořenými výrobcem grafické karty. To znamená, že určité příkazy používané uvnitř jazyka mohou mít svůj skutečný kompilovaný bytecode optimalizovaný tak, aby účinně pracoval se specifickými hardwarovými funkcemi konkrétní grafické karty. To zvyšuje rychlost provádění a může rozšířit základní funkce o speciální možnosti a efekty vykreslování, které by mohly být jedinečné pro jednu grafickou kartu.
Existují tři typy shaderů, které lze použít pro psaní stínovacího jazyka OpenGL®. První je známý jako shader vrcholů a je navržen pro provádění složitých operací na jednotlivých vrcholech, jako je překlad, změna měřítka nebo texturování bodu v prostoru. Druhým je shader geometrie a lze jej použít k přidání, odebrání nebo jiné manipulaci s polygony dříve, než budou nakonec rastrovány. Fragmentové shadery, také nazývané shadery pixelů, lze zapsat pro provádění operací na bodech ve 3D scéně, protože jsou převedeny do plochého dvourozměrného (2D) obrazu pro zobrazení na obrazovce, jako jsou světelné efekty nebo zkreslení.