Zobrazit předchozí téma :: Zobrazit následující téma |
Je podle vás lepší použít deferred nebo forward rendering? |
Deferred rendering |
|
20% |
[ 1 ] |
Forward rendering |
|
80% |
[ 4 ] |
|
Celkem hlasů : 5 |
|
Autor |
Zpráva |
KoudyDev
Založen: 19. 08. 2008 Příspěvky: 14 Bydliště: Hradec Králové
|
Zaslal: 19. srpen 2008, 19:09:25 Předmět: Deferred Rendering |
|
|
Už delší dobu pracuji na game enginu a rozhodl jsem se použít deferred rendering, abych urychlil vykreslování scén s velkým počtem dynamických světel... vše funguje výborně, ale zajimalo by mě jestli máte skušenosti nebo nápad na optimalizací ... (každej frejm na víc je dobrej frejm...) |
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 19. srpen 2008, 19:56:22 Předmět: |
|
|
Sice se sám v poslední době soustředím na ray tracing v reálném čase - ale snad pár věcí k deferred renderingu si pamatuji.
S optimalizací jsem měl nejvíce úspěchů s touto metodou:
1) Vykreslíš si po jednom bounding light volume (tedy objemové tělesa kolem světel ...) tak, aby okraj tělesa byl shodný s okrajem, kde je světlo ztlumeno. Toto zapíšeš do stencil bufferu (pro každé světlo jinou hodnotu).
2) Nyní vykreslíš fullscreen-quad osvětlený jedním světlem, kdy bude vykreslen pouze na pozici, kde stenci buffer je roven hodnotě kterou jsi v předchozím kroku zapsal pro dané světlo.
Protože čím více fragmentů zabírá světlo, tím více bude náročné (tj. je závislý na počtu fragmentů (resp. pixelů)).
- vlastně něco podobného používám i v ray traceru - light's volume hierarchical bounding volumes se to nazývá u ray tracingu.
Osobně by mě ale zajímalo, jak řešíš průhlednost při deferred renderingu (to je vlastně důvod, proč nakonec používám a jsem zastánce spíše forward renderingu)? používáš vůbec průhlednost u objektů? jestli ano, tak pouze 1-vrstvou, nebo více vrstev? jakou metodu jsi použil k průhlednosti? _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
|
KoudyDev
Založen: 19. 08. 2008 Příspěvky: 14 Bydliště: Hradec Králové
|
Zaslal: 19. srpen 2008, 20:22:12 Předmět: |
|
|
Na řešení průhledných objektu se teprve chystám ale někde jsem četl že by se dalo průhledné objekty vykreslovat přes forward r. a neprůhledné přes deferred r. do textury a v post procesingu to spojit... ale myslím si že u tohohle řešení bude problé na mistech kde neprůhledné objekty budou překrývat ty průhledné...
tyky mě napahlo že by se dala alpha u průhledných objektů uložit někam do GBufferu a řešit průhlednost až při osvětlování ale prakticky jsem to ještě naskoušel... pokud máš jiný nápad tak by mě taky zajímal. |
|
Návrat nahoru |
|
|
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 19. srpen 2008, 20:26:08 Předmět: |
|
|
Zkus pro zajímavost (vygooglit) depth peeling, zajímalo by mě jestli jsem sám komu se tahle metoda neskutečně líbí. |
|
Návrat nahoru |
|
|
quas4
Založen: 18. 10. 2007 Příspěvky: 199
|
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 20. srpen 2008, 02:38:51 Předmět: |
|
|
#Khaj - Mno, jediný nebudeš - tato metoda není špatná, ale velmi náročná. Implementace depth peelingu není zase až tolik složitá, ale výpočetně velmi náročná. Teda kdybych s tím chtěl dělat šílenosti jako dělám teď s vlastním realtime ray tracerem - tj. rekurzivní reflekce v rekurzivních refrakcích (třeba do 50té úrovně a pořád v reálném čase) - tak opravdu nevím jak by se s tím pohla rasterizace, ale pro "klasické" účely by to mohlo stačit .
#KoudyDev
citace: |
Na řešení průhledných objektu ......... průhledné |
Mno, forward rendering můžeš použít, ale nebudeš moci tolika světly osvětlovat průhledné objekty .
citace: |
tyky mě napahlo že by se dala alpha u průhledných objektů uložit někam do GBufferu a řešit průhlednost až při osvětlování ale prakticky jsem to ještě naskoušel... pokud máš jiný nápad tak by mě taky zajímal. |
Hm... problém je, že když uložíš do GBufferu - tak osvětlíš průhledný objekt normálami objektu za ním - což by mohlo dělat problémy, lepší je použít již zmíněný depth-peeling. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
|
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 20. srpen 2008, 09:29:02 Předmět: |
|
|
Menší OT:
#Vilem Otte Jenom bych se rád zeptal - máš na to nějaký specifický (a drahý) hardware, nebo může tyhle grafické orgie zažívat i běžný člověk s běžným počítačem? Já tedy jaksi o ray tracingu vcelku nic nevím, ale ony zmíněné pojmy mi připomínají článek o radiositě....
O co mi jde - jestli se mám dále zabývat tím, jak dělat stíny,zrcadla a průhlednosti normálně (pro mě neskutečný problém, protože neuznávám pomalé nebo nedokonalé metody, které jsou ale jediný a masový způsob ), anebo se mám radši vrhnout na nové lepší metody? |
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 20. srpen 2008, 21:20:43 Předmět: |
|
|
#Khaj - Mno, zatím testuji hlavně doma, kde používám klasické dvoujádro + 6GB RAM (je to hodně velká paměť, ale používám i KD tree, který má opravdu velký memory-footprint).
Radiositu k výpočtu nepřímého světla jsem taky párkrát použil a jedna její variace, mi dokonce běžela interaktivně (tj. takových 15 - 25 fps) při rozlišení 640x480 a pár desítkách tisíc trianglů.
Pokud potřebuju více výkonu, tak spojím více PC do řady a potom použiju jejich procesory.
Co se týče zrcadel a stínů, tak každá rasterizační metoda je nepřesná, a také pomalá. Raytracing je mnohem rychlejší než rasterizace (ovšem není hardwarově akcelerován, takže rasterizaci s akcelerací zvládneme mnohem rychleji).
Nové lepší metody - mno, jestli chceš můžeš začít s ray tracingem (ovšem jsou to celkem kvanta informací a jeho učení zabere celkem dlouhou dobu), anebo počkat si, než venku budou nějaké knihovny na (real time) ray tracing (musím samozřejmě zmínit náš ForgottenLib) a ty potom použít. Rozhodně nedoporučuju zkoušet OpenRT, který má velmi špatnou architekturu jako ray tracer. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
|
|