Shader-ohjelma

Shader-ohjelma (toisinaan vain shader tai ohjelma, kirjaimellisesti käännettynä varjostin tai sävytin) on ohjelma, joka mahdollistaa grafiikkaliukuhihnan muokkaamisen ja on kirjoitettu tarkoitukseen suunnatulla kielellä.[1] Nimitys johtuu historiallisista syistä.[1][2] Robert L. Cookin artikkeli Shade Trees julkaistiin vuonna 1984 ja RenderManin RenderMan Shading Language -kieli kehittyi tästä ideasta.[2][3]

RenderManin kieltä on yritetty soveltaa myös grafiikkasuorittimille (GPU), jolloin havaittiin tärkeiden toimintojen puuttuminen täyteen ohjelmoitavuuteen.[2]

Grafiikkasuorittimien ominaisuudet ovat kehittyneet kiinteätoimisista (konfiguroitavista) suuremmalle ohjelmoitavuudelle.[2] Tyypillisessä grafiikkaliukuhihnassa on vaiheet:[1]

  1. (verteksit) verteksikohtainen muunnos näyttöavaruuteen
  2. (rasterointi) kolmiokohtainen iteraatio, perspektiivikorjaus
  3. (pikseli) pikselikohtainen varjostus
  4. (lopputuloksen yhdistäminen) varjostuksen yhdistäminen väri- ja syvyyspuskurien kanssa

Ohjelmoitavassa liukuhihnassa vaiheiden järjestys on kiinteä, mutta niiden toteutus on ohjelmoitavissa.[1] Aluksi ohjelmoitavuus keskittyi pikselien varjostukseen, mutta shader-mallien kehityksen myötä myös muut vaiheet tulivat ohjelmoitaviksi sekä merkittäviä uusia vaiheita kuten geometrian käsittely.[2] Sonyn PlayStation 3:ssa ja Microsoftin Xbox 360:ssa oli mukana edistyneet ominaisuudet (Shader Model 3.0) ja kiinteätoiminen liukuhihna oli vähentynyt: Nintendon Wii oli mahdollisesti viimeinen kiinteätoimista liukuhihnaa käyttävä pelikonsoli.[2]

Grafiikkasuorittimien varhainen ohjelmointi suoritettiin assemblyn kaltaisella kielellä, mutta myöhemmin on rajattu mahdollisuudet käyttämään vain korkean tason ohjelmointikieliä kuten HLSL ja GLSL (OpenGL Shading Language): assembly on näkyvillä vain debuggausta varten.[2] Unified Shader -mallissa grafiikkaliukuhihnan eri vaiheilla on samat ominaisuudet.[4]

  1. a b c d Viittausvirhe: Virheellinen <ref>-elementti; viitettä cgpp ei löytynyt
  2. a b c d e f g Viittausvirhe: Virheellinen <ref>-elementti; viitettä rtr ei löytynyt
  3. Robert L. Cook: Shade Trees (PDF) citeseerx.ist.psu.edu. Viitattu 12.1.2021. (englanniksi)
  4. Common-Shader Core Microsoft. Viitattu 26.1.2017.

From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Tubidy