Vad är ett OpenGL®-skuggningsspråk?
OpenGL®-skuggningsspråket (GLSL) är ett datorprogrammeringsspråk som är specifikt utformat för att manipulera och styra tredimensionell (3D) grafik under renderingsprocessen direkt inom grafikbearbetningsenheten (GPU) på ett grafikkort med OpenGL®-bibliotek. I grund och botten ger OpenGL® skuggningsspråk programmerare direkt tillgång till 3D-geometri och rendering på den lägsta möjliga nivån utan att faktiskt behöva skriva monteringsspråkrutiner för att gränssnitt mot GPU-hårdvara. Genom att använda OpenGL®-skuggningsspråket kan effekter såsom procedurellt genererade strukturer och geometri implementeras och optimeras direkt inom GPU, vilket påskyndar återgivningsprocessen. Det tillåter också mer komplexa funktioner, såsom animering eller specialeffekter, att implementeras effektivt utan omkostnader för högre nivåskod. Skuggningsspråket kompileras av GPU till körbar kod, vilket innebär att specifika implementeringar och kompilatorer kan utformas för enskilda grafikkort, vilket ökar prestandafördelarna med att använda de olika skuggarna.
För alla praktiska ändamål är OpenGL®-skuggningsspråket ett fullt implementerat programmeringsspråk som efterliknar syntaxen för C-programmeringsspråket på nästan alla sätt, med undantag för pekartypvariabler och vissa förbehandlardirektiv. Användardefinierade funktioner, variabler och logiska förgrenings- och looping-uttalanden stöds, vilket gör att helt 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 har slutförts, skickas det till GPU, där det sammanställs och körs efter behov under renderingsprocessen.
Ett program skrivet på skuggningsspråket OpenGL® överförs till slut till GPU, där det kan kompileras av hårdvara eller drivrutiner som produceras av grafikkortets tillverkare. Detta innebär att vissa uttalanden som används på språket kan ha sin faktiska kompilerade bytkod 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 renderingalternativ och effekter som kan vara unika för ett enda grafikkort.
Det finns tre typer av skuggmaskiner som OpenGL®-skuggningsspråket kan användas för att skriva. Den första är känd som en toppskärmning och är utformad för att utföra komplexa operationer på enskilda vertikaler, såsom översättning, skalning eller texturering av en punkt i rymden. Den andra är en geometri-skuggare och kan användas för att lägga till, ta bort eller på annat sätt manipulera polygoner innan de så småningom rasteriseras. Fragmentskuggare, även kallade pixelskärare, kan skrivas för att utföra operationer på punkter i 3D-scenen när de översätts till en platt tvådimensionell (2D) bild för visning på en skärm, såsom ljuseffekter eller distorsioner.