Hvad er et OpenGL® skyggesprog?
OpenGL® skyggesprog (GLSL) er et computerprogrammeringssprog designet specifikt til at manipulere og styre tredimensionel (3D) grafik under gengivelsesprocessen direkte inden for den grafiske behandlingsenhed (GPU) på et grafikkort ved hjælp af OpenGL® biblioteker. I det væsentlige giver OpenGL® skyggesprog programmerere direkte adgang til 3D-geometri og gengivelse på det lavest mulige niveau uden egentlig at skulle skrive samlingssprogrutiner for at interface med GPU-hardware. Gennem brug af OpenGL® skyggesprog kan effekter som proceduremæssigt genererede strukturer og geometri implementeres og optimeres direkte inden for GPU, hvilket fremskynder gengivelsesprocessen. Det tillader også, at mere komplekse funktioner, såsom animation eller specialeffekter, implementeres effektivt uden omkostningen af kode på højere niveau. Skyggeleggesproget er samlet af GPU til eksekverbar kode, hvilket betyder, at specifikke implementeringer og compilere kan designes til individuelle grafikkort, hvilket øger ydeevnen ved at bruge de forskellige skyggelegemer.
Til alle praktiske formål er OpenGL® skyggesprog et fuldt implementeret programmeringssprog, der efterligner syntaksen for C-programmeringssprog på næsten alle måder, med undtagelse af piktypevariabler og nogle forbehandlingsdirektiver. Brugerdefinerede funktioner, variabler og logiske forgrenings- og looping-udsagn understøttes alle, hvilket tillader fuldt ud realiserede programmer at blive skrevet kun ved hjælp af shader-sproget og give et abstraktionsniveau, der kan bæres på tværs af forskellige operativsystemer og hardwarekonfigurationer. Når et shader-program er afsluttet, overføres det til GPU, hvor det kompileres og udføres efter behov under gengivelsesprocessen.
Et program skrevet på OpenGL® skyggesprog overføres til sidst til GPU, hvor det kan kompileres af hardware eller drivere produceret af producenten af grafikkortet. Dette betyder, at visse udsagn, der bruges på sproget, kan få deres faktiske kompilerede bytecode optimeret til at arbejde effektivt med de specifikke hardwarefunktioner på et specifikt grafikkort. Dette øger eksekveringshastigheden og kan udvide den grundlæggende funktionalitet til også at omfatte specielle gengivelsesmuligheder og effekter, der kan være unikke for et enkelt grafikkort.
Der er tre typer skygger, som OpenGL® skyggesprog kan bruges til at skrive. Den første er kendt som en toppunktskygger og er designet til at udføre komplekse operationer på individuelle hjørner, såsom oversættelse, skalering eller teksturering af et punkt i rummet. Den anden er en geometri-skygger og kan bruges til at tilføje, fjerne eller på anden måde manipulere polygoner, inden de til sidst rasteriseres. Fragmentskygger, også kaldet pixelskygger, kan skrives for at udføre operationer på punkter i 3D-scenen, da de oversættes til et fladt todimensionelt (2D) billede til visning på en skærm, såsom lyseffekter eller forvrængninger.