Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 5. duben 2008, 13:48:54 Předmět: Deffered rendering/shading |
|
|
Tak jsem ucinil prvni krucky k memu vysnenemu enginu. Prozatim jsem si zkusil implementovat metodu deffered shadingu popsanou mimo jine napriklad zde-> http://www.talula.demon.co.uk/DeferredShading.pdf.
K memu velikemu zdeseni se pri renderingu za nasledujicich podminek:
1 svetlo 1 model 600 trojuhelniku (vertex & index buffer v pameti fraficky karty) s cullingem & depth testem, 60Hz monitor, Maximalni pocet rendertargetu=1, vs&ps verze 2.0, bez stinovani, bez bumpmappingu, bez offset mappingu, bez klobouku bos...
Stalo toto:
bez tehle metody - 60 FPS
s deffered renderingem - 13 FPS
Samozrejme jsem cekal, ze sila teto metody se projevi az pri vetsim mnozstvi svetel a modelu, jelikoz jeji narocnost je pocet svetel + pocet modelu a ne pocet svetel*pocet modelu, ale ze to pujde takhle dolu pro 1 model to jsem necekal....
A ptam se - ma smysl vubec dale opimalizovat (par veci by tam bylo, ale ty by se projevily az pro vice modelu) a koupit novou grafickou kartu kvuli podpore vice render targets (aby se normaly a barva nemusely kreslit zvlast) anebo se mam na tuhle metodu vykaslat ... ? |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 5. duben 2008, 15:00:48 Předmět: |
|
|
Je možné, že děláš něco špatně. Popiš svůj hw, konfiguraci render targets, zda používáš AA, jak řešíš to osvětlení apod. Deferred shading je hodně náročný na sběrnici grafiky a téměř nevyužívá vertexové procesory. Mně osobně to jede celkem pěkně.
Jinak nečekej od toho moc, ono se to stejně zas tak moc nepoužívá. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 5. duben 2008, 17:32:36 Předmět: Detailněji |
|
|
Dělám v Borland TurboC++ s DirectX verze 9.0 na WindowsXP sp3.
AA nepouzivam.
O moji graficke karte vypovidaji moje caps:
Nejprve vyrenderuju normaly a barvy do dvou textur a pak osvetluju kazdym svetlem s pricitacim blendingem do backbufferu.
Nejvic to asi brzdi to ze moje karta maj jen jeden renderterget a tedy kreslim dvakrat...
Tohle je strucnejsi ukazka kodu renderujiciho (je nemozny poslat ho uplne celej jelikoz to mam vsechno obaleny tolika tridama ze by se vtom nikdo nevyznal)
Hlavni je funkce TEngine::Draw(), ostatni tam jsou pro lepsi predstavu jak co kreslim. Shadery jsou na konci (kompilovany pro verze 2.0 ).
http://nopaste.ceske-hry.cz/1527
Edit: thx Mem.
Naposledy upravil Khaj dne 5. duben 2008, 18:52:11, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 5. duben 2008, 18:19:15 Předmět: |
|
|
OT: mame tady tag CODE, a pro takhle velke kusy zdrojaku krasny http://nopaste.ceske-hry.cz, ktery ti ten kod i obarvi, tak to tam byt tebou dam a do prispevku jen link _________________
|
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 5. duben 2008, 19:12:07 Předmět: |
|
|
Mně se na tom kódu třeba nelíbí, jak je to odsazený. A nemyslím si, že mám velkej zájem to v této formě studovat. Caps jsou mi k ničemu, mohls prostě napsat GF FX, to by mi úplně stačilo (za předpokladu, že jsem to tipnul správně). V následujícím textu budu předpokládat, že je to opravdu GF FX.
Teď otázka, zda je to FX 5200-5600 nebo FX 5700-5950. V prvním případě tě musím zklamat, má to strašně pomalé shader jednotky, 5200 myslím dokonce neumí ani PS2.0 a emuluje to přes PS1.3 nebo tak něco. V druhém případě je to lepší ale furt je to na pytel, FX řada se nepovedla prostě. Pro dosažení vyššího výkonu se používaly lookup textury, kde jsi měl nějaké předpočítané data. Místo funkce normalize se používala normalization cube mapa, kde jsi dosadit normálu jako koordináty a ono ti ji vrátilo normalizovanou, na funkce pow a sqrt se taky používaly lookup textury (tabulky). Takhle se to muselo kdysi dělat i na GF1-4 a na Radeonech 7000-9250. Nicméně s příchodem Radeonu 9500 a GF6 platí, že používat lookup tabulky zpomaluje, zatěžuje to sběrnici a shader procesory to dokáží spočítat mnohem mnohem rychleji (nedávno jsem ze svého efektu odstranil jednu opravdu malou lookup texturu, nahradil to výpočtem v pixel shaderu a na ATI X1700 se to zrychlilo o 30%).
A teď mi určitě povíš, že to GF FX není a já tady budu za vola. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 5. duben 2008, 20:04:06 Předmět: |
|
|
Promin - jediny clovek co je za vola jsem ja ze to predkladam v takovehle forme (pouceni pro priste) kdyz stacilo napsat jen typ grafarny (ale zato nemuzes rict ze bych poskytl malo informaci ).
Tipnul jsi spravne - mam GeFroce FX 5200 ...
takze proste koupit novou grafarnu a doufat ze ti co budou v budoucnu hrat hry mnou vyrobene ji nebudou mit takhle zastaralou
Diky moc za odpoved a za trpelivost se mnou |
|
Návrat nahoru |
|
|
|