Što je OpenGL® jezik za sjenčanje?

OpenGL® jezik sjenčanja (GLSL) je računalni programski jezik dizajniran posebno za manipulaciju i kontrolu trodimenzionalne (3D) grafike tijekom procesa renderiranja izravno unutar grafičke procesorske jedinice (GPU) grafičke kartice koristeći OpenGL® knjižnice. U biti, OpenGL® jezik za sjenčanje daje programerima izravan pristup 3D geometriji i renderiranju na najnižoj mogućoj razini bez da zapravo moraju pisati rutine asemblerskog jezika za sučelje s GPU hardverom. Korištenjem OpenGL® jezika za sjenčanje, efekti kao što su proceduralno generirane teksture i geometrija mogu se implementirati i optimizirati izravno unutar GPU-a, ubrzavajući proces renderiranja. Također omogućuje učinkovitu implementaciju složenijih funkcija, kao što su animacija ili specijalni efekti, bez dodatnih troškova koda više razine. Jezik sjenčanja GPU kompilira u izvršni kod, što znači da se specifične implementacije i prevoditelji mogu dizajnirati za pojedinačne grafičke kartice, povećavajući performanse korištenjem različitih shadera.

Za sve praktične svrhe, jezik za sjenčanje OpenGL® je potpuno implementiran programski jezik koji oponaša sintaksu programskog jezika C na gotovo sve načine, s izuzetkom varijabli tipa pokazivača i nekih predprocesorskih direktiva. Podržane su korisnički definirane funkcije, varijable i logičke izjave grananja i petlje, što omogućuje pisanje potpuno realiziranih programa koristeći samo shader jezik i pružajući razinu apstrakcije koja je prenosiva na različite operativne sustave i hardverske konfiguracije. Nakon što je program za sjenčanje dovršen, prosljeđuje se GPU-u, gdje se kompilira i izvršava prema potrebi tijekom procesa renderiranja.

Program napisan u OpenGL® jeziku za sjenčanje u konačnici se prosljeđuje GPU-u, gdje ga može kompajlirati hardver ili upravljački programi koje proizvodi proizvođač grafičke kartice. To znači da određene izjave koje se koriste unutar jezika mogu imati svoj stvarni kompilirani bajtkod optimiziran za učinkovit rad sa specifičnim hardverskim značajkama određene grafičke kartice. To povećava brzinu izvršenja i može proširiti osnovnu funkcionalnost uključivanjem posebnih opcija renderiranja i efekata koji bi mogli biti jedinstveni za jednu grafičku karticu.

Postoje tri vrste shadera za koje se jezik sjenčanja OpenGL® može koristiti za pisanje. Prvi je poznat kao vrh sjenila i dizajniran je za izvođenje složenih operacija na pojedinačnim vrhovima, kao što je prevođenje, skaliranje ili teksturiranje točke u prostoru. Drugi je geometrijski shader i može se koristiti za dodavanje, uklanjanje ili na drugi način manipuliranje poligonima prije nego što se na kraju rasteriziraju. Fragmentni shaderi, koji se nazivaju i pikselski sjenčani, mogu se napisati za izvođenje operacija na točkama u 3D sceni dok se prevode u ravnu dvodimenzionalnu (2D) sliku za prikaz na zaslonu, kao što su svjetlosni efekti ili izobličenja.