.[ ČeskéHry.cz ].
Deferred Rendering

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
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%
 20%  [ 1 ]
Forward rendering
80%
 80%  [ 4 ]
Celkem hlasů : 5

Autor Zpráva
KoudyDev



Založen: 19. 08. 2008
Příspěvky: 14
Bydliště: Hradec Králové

PříspěvekZaslal: 19. srpen 2008, 19:09:25    Předmět: Deferred Rendering Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 19. srpen 2008, 19:56:22    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
KoudyDev



Založen: 19. 08. 2008
Příspěvky: 14
Bydliště: Hradec Králové

PříspěvekZaslal: 19. srpen 2008, 20:22:12    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Khaj



Založen: 16. 01. 2008
Příspěvky: 49

PříspěvekZaslal: 19. srpen 2008, 20:26:08    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 19. srpen 2008, 22:52:29    Předmět: Odpovědět s citátem

zajimava variace: http://diaryofagraphicsprogrammer.blogspot.com/2008/03/light-pre-pass-renderer.html
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 20. srpen 2008, 02:38:51    Předmět: Odpovědět s citátem

#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ě Surprised 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 Wink.

#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 Wink.

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Khaj



Založen: 16. 01. 2008
Příspěvky: 49

PříspěvekZaslal: 20. srpen 2008, 09:29:02    Předmět: Odpovědět s citátem

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 Very Happy), anebo se mám radši vrhnout na nové lepší metody?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 20. srpen 2008, 21:20:43    Předmět: Odpovědět s citátem

#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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna