Legjobb válasz
Az árnyékolók olyan speciális programok, amelyeket a grafikus hardverek használnak képek előállításához. Általában kisebb programokra vannak felosztva, amelyek a hardveres megjelenítési folyamat különböző aspektusait kezelik.
Többféle változat létezik, de a leggyakoribbak a pixel és a csúcs árnyékolók.
a vertex shader felelős a bemeneti geometriában bekövetkező bármilyen változásért. Ez általában azt jelenti, hogy háromdimenziós geometriát vetítenek a kimeneti kép 2d vetítési síkjára, de néha itt is hozzáadhat valamilyen eljárási mozgást vagy deformációt a geometriához.
A pixel árnyékoló a csúcs árnyékoló kimenete, és létrehozza azokat a képpontokat, amelyek megjelennek a végső képen. Legtöbbször ez a megjelenítési egyenlet bizonyos variációin alapul, összehasonlítva a pixel irányát a fényforrások irányával és a felület tulajdonságával. , de lehet bármi, egy véletlenszerű zajfüggvénytől a komplex szimulációig vagy sugárkövetésig.
Ennek az a része különbözik leginkább a szokásos programozástól, hogy a csúcs és a pixel árnyékolók is rendkívül párhuzamos. Minden csúcs árnyékoló a bemeneti adatok minden csúcsán egyszerre fog futni; minden pixel shader a végső kép minden pixelén egyszerre fog futni. Ez azt jelenti, hogy nehéz egy pixelhez valamit tenni a másik állapota alapján – az összes pixel egymástól függetlenül egyszerre fog futni. Azoknak a hatásoknak, amelyeknek ismerniük kell a kontextust, gyakran egymás után több pixel árnyékolót kell futtatniuk, az eredményeket ideiglenes képekbe tárolva.
Ez megfelelő, nagyon alapos áttekintést nyújt a működéséről:
Válasz
A „pixel shader” (ami rossz név a „fragment shader” számára) egy kicsi program, amely sokszor párhuzamosan fut a GPU-n a töredékek színének meghatározásához. Alapvetően a töredékek fogalmilag nagyon hasonlítanak a pixelekhez, ezért a név összekeveredik.
Amikor a geometriát rajzolásra adják be, a csúcsokat a „csúcs árnyékoló” alakítja át. A csővezeték olyan primitíveket fog létrehozni, mint háromszögek vagy vonalak, és miután kivetítették őket a képernyőre és levágták, a raszteríró kidolgozza az összes érintésre kerülő „pixelt”, és interpolálja az értékeket a csúcsok között, mint például a színek, a textúra koordinátái vagy a normálok . A töredék árnyékolót futtatjuk az egyes töredékek számára, hogy meghatározzuk a végleges színt. Más műveleteket, például mélység / alfa / stencil tesztet hajtanak végre, majd a töredékek esetleg átlagolhatók lesznek többmintás antialiasing esetén, mielőtt végül tényleges pixelszínekké válnának, amelyeket a képernyő pufferbe kell írni vagy keverni.
A kép innen készült .