Hva er et OpenGL® skyggespråk?
OpenGL® skyggespråk (GLSL) er et programmeringsspråk for datamaskiner designet spesielt for å manipulere og kontrollere tredimensjonal (3D) grafikk under gjengivelsesprosessen direkte innenfor den grafiske prosesseringsenheten (GPU) på et grafikkort ved bruk av OpenGL®-biblioteker. I hovedsak gir OpenGL® skyggespråk programmerere direkte tilgang til 3D-geometri og gjengivelse på et lavest mulig nivå uten egentlig å måtte skrive samlingsspråklige rutiner for å grensesnitt mot GPU-maskinvare. Gjennom bruk av skyggespråket OpenGL®, kan effekter som prosedyregenererte strukturer og geometri implementeres og optimaliseres direkte i GPU, noe som gjør fort gjengivelsesprosessen raskere. Det gjør det også mulig å implementere mer komplekse funksjoner, for eksempel animasjon eller spesialeffekter, uten at det er koden til høyere nivå. Skyggeleggespråket er kompilert av GPU til kjørbar kode, noe som betyr at spesifikke implementeringer og kompilatorer kan utformes for individuelle grafikkort, noe som øker ytelsesgevinstene ved bruk av de forskjellige skyggeleggerne.
For alle praktiske formål er skyggespråket OpenGL® et fullt implementert programmeringsspråk som etterligner syntaksen til programmeringsspråket C på nesten alle måter, med unntak av pekertypevariabler og noen forhåndsprosessordirektiver. Brukerdefinerte funksjoner, variabler og logiske forgrenings- og looping-uttalelser støttes alle, slik at fullt realiserte programmer kan skrives med bare skyggespråket, og gir et abstraksjonsnivå som er bærbart på tvers av forskjellige operativsystemer og maskinvarekonfigurasjoner. Når et shader-program er fullført, blir det sendt til GPU, hvor det blir samlet og utført etter behov under gjengivelsesprosessen.
Et program skrevet på OpenGL® skyggespråk overføres til slutt til GPU, der det kan settes sammen av maskinvare eller drivere produsert av produsenten av grafikkortet. Dette betyr at visse utsagn som brukes på språket, kan få den faktiske kompilert bytekoden optimalisert for å fungere effektivt med de spesifikke maskinvarefunksjonene til et spesifikt grafikkort. Dette øker eksekveringshastigheten og kan utvide den grunnleggende funksjonaliteten til å inkludere spesielle gjengivelsesalternativer og effekter som kan være unike for et enkelt grafikkort.
Det er tre typer skyggelegger som OpenGL® skyggeleggespråk kan brukes til å skrive. Den første er kjent som en toppunkt-skyggelegger og er designet for å utføre komplekse operasjoner på individuelle hjørner, for eksempel å oversette, skalere eller teksturere et punkt i rommet. Den andre er en geometri-skyggelegger og kan brukes til å legge til, fjerne eller på annen måte manipulere polygoner før de til slutt blir rasterisert. Fragment shaders, også kalt pixel shaders, kan skrives for å utføre operasjoner på punkter i 3D-scenen når de blir oversatt til et flatt todimensjonalt (2D) bilde for visning på en skjerm, for eksempel lyseffekter eller forvrengning.