az elmúlt napokban nagyon felkeltette érdeklődésem a deferred shading, mert eddig
-a spatialgraphban tárolni kellett a fény-modell/pályaelem összetartozást valamint mindezt karban is kellett tartani
-minden egyes fényforrás egy (ill. még egy, ha árnyék is tartozik hozzá) renderelési menetet jelentett grafikai oldalról
-ha történetesen tsbm (és esetleg pom) is kerül rá akkor ugyanolyan jellegű átalakításokat többször is el kellett elvégezni, ami nagy felületek esetén eléggé fill rate pazarló
-vertexadatokat minden egyes esetben ujra el kellett küldeni és azokra lefutott az adott vertex program is
-rendereléskor polygon offsetet (vagy position invariantot) kellett alkalmazni a z-fightokat elkerülendő és additiv blendet
most nézzük milyen előnyekkel és hátrányokkal jár a deferred technika
hátrányok:
- legalább 3 texturára (és mrt-re) van szükség, ami fragmentenként "sok" adat kiirását jelenti szín bufferekbe; ez az egyik legszűkebb kereszmetszet
- az árnyalás elvégzése is elég költséges eljárás (-bár ez függ a fényforrás típusától- mivel minden számítást per-fragment tudunk csak elvégezni) és hasonlóan a forward shadinghez itt is additiv blend szükséges
- a transzparens felületeket nem lehet deferred shadinggel együtt használni, azokra továbbra is a forward rendering szabályai érvényesek vagy depth peeling
- extrém módon kell ügyelni a fill rate-re!!!!!
előnyök:
- nincs szükség többmenetes renderelésre a jelenet árnyalt megjelenítéséhez vagyis minden (vertex és fragment) számítást csak egyszer kell elvégezni (hi poly tesszelláció lehetséges!!)
-a spatialgraphban tárolni kellett a fény-modell/pályaelem összetartozást valamint mindezt karban is kellett tartani
-minden egyes fényforrás egy (ill. még egy, ha árnyék is tartozik hozzá) renderelési menetet jelentett grafikai oldalról
-ha történetesen tsbm (és esetleg pom) is kerül rá akkor ugyanolyan jellegű átalakításokat többször is el kellett elvégezni, ami nagy felületek esetén eléggé fill rate pazarló
-vertexadatokat minden egyes esetben ujra el kellett küldeni és azokra lefutott az adott vertex program is
-rendereléskor polygon offsetet (vagy position invariantot) kellett alkalmazni a z-fightokat elkerülendő és additiv blendet
most nézzük milyen előnyekkel és hátrányokkal jár a deferred technika
hátrányok:
- legalább 3 texturára (és mrt-re) van szükség, ami fragmentenként "sok" adat kiirását jelenti szín bufferekbe; ez az egyik legszűkebb kereszmetszet
- az árnyalás elvégzése is elég költséges eljárás (-bár ez függ a fényforrás típusától- mivel minden számítást per-fragment tudunk csak elvégezni) és hasonlóan a forward shadinghez itt is additiv blend szükséges
- a transzparens felületeket nem lehet deferred shadinggel együtt használni, azokra továbbra is a forward rendering szabályai érvényesek vagy depth peeling
- extrém módon kell ügyelni a fill rate-re!!!!!
előnyök:
- nincs szükség többmenetes renderelésre a jelenet árnyalt megjelenítéséhez vagyis minden (vertex és fragment) számítást csak egyszer kell elvégezni (hi poly tesszelláció lehetséges!!)
- nincs szükség nagy felületek felültesszellálására az árnyalás miatt (egy nagy felületen látszódó kocka egy kisméretü pontfénnyel megvilágítva lehuzza fill ratet és ezen csak scissor testtel + depth clamppel lehetett javítani)
- mivel minden fragment minden árnyaláshoz szükséges paramétere (legalább a pozició és a normál) elérhető világ koordinátákban ezért nagyon egyszerű a fényforrásokat kezelni, hiszen funkcionálisan csak egy sikidom renderelését igénylik a képernyőre
- az árnyékok (shadowmap, shadow volume) ugyanugy használhatók, mint a forward renderingben
természetesen számos renderelési lépés áttervezését igényli ez a technika hiszen teljesen szét kell választani az árnyalást és az árnyalást előkészítő lépéseket
(valamint erősen ajánlott egy nagy teljesítményű videokártya)
- mivel minden fragment minden árnyaláshoz szükséges paramétere (legalább a pozició és a normál) elérhető világ koordinátákban ezért nagyon egyszerű a fényforrásokat kezelni, hiszen funkcionálisan csak egy sikidom renderelését igénylik a képernyőre
- az árnyékok (shadowmap, shadow volume) ugyanugy használhatók, mint a forward renderingben
természetesen számos renderelési lépés áttervezését igényli ez a technika hiszen teljesen szét kell választani az árnyalást és az árnyalást előkészítő lépéseket
(valamint erősen ajánlott egy nagy teljesítményű videokártya)