Vad är ett OpenGL® Shading Language?

OpenGL® shading language (GLSL) är ett datorprogrammeringsspråk som är speciellt utformat för att manipulera och styra tredimensionell (3D) grafik under renderingsprocessen direkt i grafikkortets grafiska processenhet (GPU) som använder OpenGL®-bibliotek. I huvudsak ger OpenGL®-skuggningsspråk programmerare direkt tillgång till 3D-geometri och rendering på lägsta möjliga nivå utan att egentligen behöva skriva assemblerspråkrutiner för gränssnitt med GPU-hårdvara. Genom användningen av OpenGL®-skuggningsspråket kan effekter som procedurgenererade texturer och geometri implementeras och optimeras direkt i GPU:n, vilket påskyndar renderingsprocessen. Det tillåter också mer komplexa funktioner, såsom animering eller specialeffekter, att effektivt implementeras utan överbelastning av kod på högre nivå. Skuggningsspråket kompileras av GPU:n till körbar kod, vilket innebär att specifika implementeringar och kompilatorer kan designas för individuella grafikkort, vilket ökar prestandavinsterna från att använda de olika skuggningarna.

För alla praktiska ändamål är OpenGL®-skuggningsspråket ett fullt implementerat programmeringsspråk som efterliknar syntaxen för programmeringsspråket C på nästan alla sätt, med undantag för variabler av pekare och vissa förprocessordirektiv. Användardefinierade funktioner, variabler och logiska förgrenings- och looping-satser stöds alla, vilket gör att fullt realiserade program kan skrivas med bara shader-språket och ger en abstraktionsnivå som är portabel över olika operativsystem och hårdvarukonfigurationer. När ett shader-program är klart skickas det till GPU:n, där det kompileras och exekveras efter behov under renderingsprocessen.

Ett program skrivet i OpenGL®-skuggningsspråket skickas slutligen till GPU:n, där det kan kompileras av hårdvara eller drivrutiner som produceras av tillverkaren av grafikkortet. Detta innebär att vissa uttalanden som används i språket kan ha sin faktiska kompilerade bytekod optimerad för att fungera effektivt med de specifika hårdvarufunktionerna på ett specifikt grafikkort. Detta ökar exekveringshastigheten och kan utöka den grundläggande funktionaliteten till att inkludera speciella renderingsalternativ och effekter som kan vara unika för ett enda grafikkort.

Det finns tre typer av shaders som OpenGL®-skuggningsspråket kan användas för att skriva. Den första är känd som en vertex shader och är utformad för att utföra komplexa operationer på enskilda hörn, som att översätta, skala eller strukturera en punkt i rymden. Den andra är en geometriskuggning och kan användas för att lägga till, ta bort eller på annat sätt manipulera polygoner innan de så småningom rastreras. Fragment shaders, även kallade pixel shaders, kan skrivas för att utföra operationer på punkter i 3D-scenen eftersom de översätts till en platt tvådimensionell (2D) bild för visning på en skärm, såsom ljuseffekter eller förvrängningar.