Paras vastaus
Varjostimet ovat erikoistuneita ohjelmia, joita grafiikkalaitteet käyttävät kuvien tuottamiseen. Ne jaetaan yleensä pienempiin ohjelmiin, jotka käsittelevät laitteiston renderointiprosessin eri näkökohtia.
On olemassa useita erilaisia lajikkeita, mutta yleisimpiä ovat pikseli ja kärjen varjostimet.
vertex shader on vastuussa mahdollisista muutoksista syöttögeometriaan. Yleensä se tarkoittaa 3-d-geometrian heijastamista lähtökuvan 2-d-projektiotasolle, mutta joskus voit lisätä geometriaan jonkinlaisen menettelyliikkeen tai muodonmuutoksen myös tässä.
Pikselivarjostin vie kärjen varjostimen ulostulo ja luo pikselit, jotka näkyvät lopullisessa kuvassa. Suurimman osan ajasta tämä perustuu renderointiyhtälön muutoksiin verrattaessa pikselin suuntausta valonlähteiden suuntiin ja pinnan ominaisuuksiin , mutta voi olla mitä tahansa satunnaisesta kohinatoiminnosta monimutkaiseen simulointiin tai säteen jäljitykseen.
Tämä eroaa tavallisesta ohjelmoinnista eniten, että sekä kärkipiste- että pikselivarjostimet ovat erittäin rinnakkain. Kukin kärjen varjostin toimii kaikilla syötetietojen kärjillä samanaikaisesti; kukin pikselivarjostin toimii lopullisen kuvan jokaisella pikselillä samanaikaisesti. Tämä tarkoittaa, että on vaikea tehdä jotain yhdelle pikselille toisen tilan perusteella – kaikki pikselit toimivat samanaikaisesti toisistaan riippumatta. Tehosteiden, joiden on oltava tietoisia asiayhteydestä, on usein suoritettava useita pikselivarjostimia peräkkäin, tallentamalla tulokset väliaikaisiin kuviin.
Tämä antaa sinulle kunnollisen, perustavanlaatuisen yleiskuvan toiminnasta:
Vastaa
”pixel shader” (joka on huono nimi ”fragment shader”: lle) on pieni ohjelma, joka toimii rinnakkain useita kertoja GPU: lla fragmenttien värin määrittämiseksi. Periaatteessa fragmentit ovat käsitteellisesti hyvin samankaltaisia kuin pikselit, joten nimi sekoittuu.
Kun geometria lähetetään piirtämistä varten, ”kärkipisteet” muuntavat pisteet. Putkilinja rakentaa primitiivit, kuten kolmiot tai viivat, ja kun ne on heijastettu ruudulle ja leikattu, rasteroitsija selvittää kaikki kosketetut pikselit ja interpoloi kaikki arvot pisteiden välillä, kuten värit, tekstuurikoordinaatit tai normaalit . Fragmentin varjostin suoritetaan jokaiselle fragmentille lopullisen värin määrittämiseksi. Muut toiminnot, kuten syvyys- / alfa- / stensiilitestaus, suoritetaan ja sitten fragmentit saatetaan mahdollisesti keskiarvoistaa yhdessä, kun kyseessä on moninäytteen antialiasia, ennen kuin niistä tulee lopulta todellisia pikselivärejä kirjoitettaviksi tai sekoitettaviksi näytön puskuriin.
Kuva otettu täältä .