OpenGL®-varjostuskieli (GLSL) on tietokoneohjelmointikieli, joka on suunniteltu erityisesti manipuloimaan ja ohjaamaan kolmiulotteista (3D) grafiikkaa renderöintiprosessin aikana suoraan näytönohjaimen graafisessa käsittelyyksikössä (GPU) OpenGL®-kirjastoja käyttäen. Pohjimmiltaan OpenGL® -varjostuskieli antaa ohjelmoijille suoran pääsyn 3D -geometriaan ja renderöintiin mahdollisimman alhaisella tasolla ilman, että heidän tarvitsee itse kirjoittaa kokoonpanokielen rutiineja GPU -laitteiston käyttöliittymään. OpenGL® -varjostuskielen avulla tehosteita, kuten prosessuaalisesti luotuja tekstuureja ja geometriaa, voidaan toteuttaa ja optimoida suoraan GPU: ssa, mikä nopeuttaa renderöintiprosessia. Se mahdollistaa myös monimutkaisempien toimintojen, kuten animaation tai erikoistehosteiden, toteuttamisen tehokkaasti ilman ylemmän tason koodin lisäkustannuksia. GPU kääntää varjostuskielen suoritettavaksi koodiksi, mikä tarkoittaa, että yksittäisille näytönohjaimille voidaan suunnitella erityisiä toteutuksia ja kääntäjiä, mikä lisää suorituskykyä eri varjostimien käytöstä.
Käytännössä OpenGL®-varjostuskieli on täysin toteutettu ohjelmointikieli, joka jäljittelee C-ohjelmointikielen syntaksia lähes kaikilla tavoilla, lukuun ottamatta osoitintyyppisiä muuttujia ja joitain esikäsittelyohjeita. Käyttäjän määrittämiä toimintoja, muuttujia ja loogisia haarautumis- ja silmukkalausekkeita tuetaan, mikä mahdollistaa täysin toteutettujen ohjelmien kirjoittamisen vain varjostinkielellä ja tarjoaa abstraktion tason, joka on kannettava eri käyttöjärjestelmissä ja laitteistokokoonpanoissa. Kun varjostinohjelma on valmis, se välitetään GPU: lle, jossa se kootaan ja suoritetaan tarpeen mukaan renderointiprosessin aikana.
OpenGL® -varjostuskielellä kirjoitettu ohjelma välitetään lopulta GPU: lle, jossa se voidaan koota näytönohjaimen valmistajan laitteistolla tai ohjaimilla. Tämä tarkoittaa sitä, että tietyt kielen sisällä käytetyt lausekkeet voidaan optimoida varsinaiseksi kootuksi tavukoodiksi toimimaan tehokkaasti tietyn näytönohjaimen laitteisto -ominaisuuksien kanssa. Tämä nopeuttaa suorittamista ja voi laajentaa perustoimintoja sisältämään erityisiä renderointivaihtoehtoja ja tehosteita, jotka voivat olla ainutlaatuisia yhdelle grafiikkakortille.
OpenGL® -varjostuskielellä voidaan kirjoittaa kolme varjostinta. Ensimmäinen tunnetaan pisteiden varjostimena ja on suunniteltu suorittamaan monimutkaisia toimintoja yksittäisille pisteille, kuten avaruuden pisteen kääntäminen, skaalaus tai teksturointi. Toinen on geometrian varjostin, ja sitä voidaan käyttää monikulmioiden lisäämiseen, poistamiseen tai muulla tavalla käsittelemiseen ennen niiden lopullista rasteroitumista. Fragmenttien varjostimet, joita kutsutaan myös pikseleiden varjostimiksi, voidaan kirjoittaa suorittamaan toimintoja 3D-kohtauksen pisteissä, kun ne muunnetaan litteäksi kaksiulotteiseksi (2D) kuvaksi näytettäväksi näytöllä, kuten valotehosteita tai vääristymiä.