GrafShader

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


Shaderek

A vertex shader kimenete és a pixel árnyaló (fragment shader) bemenete között egy GL_TRIANGLES primitív feldolgozása során ez történik:

  • A kimeneti regiszterekben (POSITION, TEXCOORD0..) a hardver összevár három csúcspontot, amelyek egy háromszöget alkotnak (0.5p).
  • A háromszöget homogén-koordinátákban a Sutherland-Hodgeman algoritmussal vágja az alábbi egyenletekkel definiált vágósíkokra: -w<x<w, -w<y<w, -w<z<w (azaz egy [x,y,z,w] pont akkor számít belső pontnak, ha mind a 6 egyenlőtlenség teljesül) (1p). A vágóalgoritmus egyenként dolgozza fel a vágósíkokat, és vágja a háromszöget. Ha egy két két végpontja közül pontosan az egyik sérti meg az adott egyenlőtlenséget, akkor azt kicseréli a metszéspontra. Példaul a –w<x esetén a [x1,y1,z1,w1] és [x2,y2,z2,w2] végpontú élre az -w1t -w2(1-t) = x1t +x2(1-t) egyenletet oldja meg t-re és a metszéspontot a [x1,y1,z1,w1] t + [x2,y2,z2,w2] (1-t) kifejezésbe helyettesíti be. Ugyanezt teszi az összes regiszterekben lévő csúcspont tulajdonsággal (pl. szín, textúrakoordináta) (1p).
  • A kapott sokszöget újraháromszögesíti (0.5p).
  • Alkalmazza a képernyő transzformációt, azaz a [-1,1]x[-1,1]x[-1,1] kockát a glViewport-tal beállított [viewport.left,viewport.right]x[viewport.bottom,viewport.top]x[0,1]-re képezi le (megjegyzés, a z tartomány lehet más is, de ezt nem tanultuk, aki mégis tudja, az plusz pontot kap) (0.5p).
  • A háromszög xy vetületének kitöltéséhez kiszámítja az inkremenseket a z-re és az összes tulajdonságra (szín, textúra koordináták) (a képleteket illetően lásd a következő feladatot) (0.5p).
  • A háromszöget pásztánként kitölti meglátogatva azokat a pixeleket, úgy, hogy inkrementális elven az összes csúcsponttulajdonságot a belső pixelre lineárisan interpolálja (1p).
  • Meghívja a pixel árnyalót.

-- Maday Peter - 2008.01.15.