.[ ČeskéHry.cz ].
Světla - model space vs. view space
Jdi na stránku Předchozí  1, 2
 
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  
Autor Zpráva
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 3. květen 2011, 22:03:49    Předmět: Odpovědět s citátem

BTW tohle vlákno by mělo být v 3D API. Sekce Grafika je věnovaná jen klikačům (v 3dsmax atd). Wink
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 3. květen 2011, 22:20:58    Předmět: Odpovědět s citátem

eosie> presunuto
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Vilem Otte



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

PříspěvekZaslal: 3. květen 2011, 22:33:40    Předmět: Odpovědět s citátem

#pcmaster - vpraxi máš pravdu, možnost a téměř vždy. Lze však použít také možnost b (xyz=rgb) a použít rgba32f - nikoliv rgba16f.

Důležité je však vědět kdy použít co. Pokud jsem fillrate-limited (ono zaplnění rgba32f bufferu trvá déle než r32f bufferu), nebo bandwidth-limited - tak jednoznačně možnost a. Avšak, pokud mám spoustu bandwidth volnou a potřebuji nižší hodnoty fillrate, ale potřebuju šílené výpočty (napadají mě různé fyzikální simulace kde toho lze využít), mohu použít možnost b s rgba32f bufferem - rekonstrukce pozice z hloubky totiž není rozhodně zadarmo, a v případě limitu ve výpočetním výkonu je metoda uložení pozic rozhodně lepší.

EDIT: Nicméně pokud potřebuju obojí, tak je důležité si uvědomit co roste rychleji - zpravidla výpočetní výkon a ne fillrate či bandwidth karty, tedy dává se přednost metodě lehčí na ně - tedy metodě a
_________________
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
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 4. květen 2011, 00:16:23    Předmět: Odpovědět s citátem

Musím absolutně nesouhlasit s variantou b a rgba32f bufferem. Rekonstrukce pozice jde v pixel shaderu udělat pomocí jedné instrukce MAD (pro neznalé: má to 3 vektorové parametery a počítá to x*y+z). To je absolutně primitivní operace. Samozřejmě je potřeba se nad problémem trochu zamyslet a ne zkopírovat nějakej debilní algoritmus z netu (a že jich tam není málo). Podmínkou je snad akorát lineární zbuffer. Schválně, jestli na to přijdete sami. Wink Takže ano, rekonstrukce té pozice je zadarmo.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 4. květen 2011, 09:15:50    Předmět: Odpovědět s citátem

Kazdopadne na uplny zaciatok, na debugging odporucam ulozit si tu world poziciu fakt do rgba32f textury a az ked to bude behat si ju prepocitavat, to sa asi zhodneme. Vidim tu nejake rgba64f a rgba16f, tak to snad ale nemysli nikto vazne, ani jedno z toho (pre pozicie) Smile Normaly, na druhu stranu, je mozne ukladat bud do rgba16f, alebo r11g11b10, rgba8 nestaci snad nikdy, max na vizualny debug.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 4. květen 2011, 13:11:01    Předmět: Odpovědět s citátem

To s tím r11g11b10 myslíš ten float ne? To by mohlo na normály stačit, i když nevím... problém je, že mantissa tam je r6g6b5 a žadný znamínko. Jinak co se týče normál, tak by snad stačilo r16g16_snorm a třetí souřadnici dopočítat, pokud je chceš hodně přesný.
_________________
AMD Open Source Graphics Driver Developer
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: 4. květen 2011, 13:43:10    Předmět: Odpovědět s citátem

#pcmaster - na normály se vyplatí ještě rgb10a2, pokud chceš ještě ukládat nějaký parametr navíc (do alpha channelu).

#Eosie - jop, máš pravdu - jde to přes mad s lineárním z-bufferem, problém je, pokud používáš logaritmický z-buffer (který já používám takřka všude) ... tím se to trošičku komplikuje, ale v praxi jsem pozici do rgba32f bufferu prakticky nikdy neukládal (přišlo mi to jako plýtvání s fillrate a bandwidth).

Teoreticky, jak jsem psal, by to bylo možné využít u šílených fyzikálních simulací - ovšem u nich není třeba deferred rendering a ani "poziční buffer"...

Ad r16g16_snorm - jde jej použít, ale tak přemýšlím jestli nepotřebuješ ještě znaménko pro třetí složku kterou dopočítáš? Protože matematicky by vznikly 2 kořeny.
_________________
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
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 4. květen 2011, 14:51:39    Předmět: Odpovědět s citátem

Jo.. to znaménko je potřeba, jinak se to protáčí

Tady jsem našel zajímavý článek o balení normál: http://aras-p.info/texts/CompactNormalStorage.html. Líbí se mi ten přístup SphereMap.

Jinak zatím to pro debug účely balím ARGB8 normály, ARGB8 depth (s tím, že pak rekonstruju hloubku zpět na float.. použít R32F by bylo lepší, ale pak se mi to blbě vizualizuje), ARGB8 na diffuse, specular
Akorát řeším, kam ukládat material ambient.. co jsem hledal, tak všude je jaksi akorát diffuse a specular, na ambient se jaksi kašle a není mi moc jasné proč.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 4. květen 2011, 16:17:13    Předmět: Odpovědět s citátem

Vilem Otte napsal:
Ad r16g16_snorm - jde jej použít, ale tak přemýšlím jestli nepotřebuješ ještě znaménko pro třetí složku kterou dopočítáš? Protože matematicky by vznikly 2 kořeny.

Ano, ale u deferred shadingu vidíš pouze jednu polokouli oboru hodnot normály, druhá je vždycky odvrácená. Když navíc ty normály jsou ve view space, tak ta třetí souřadnice je buď vždy kladná nebo vždy záporná (podle tvé definice view space) a tam už je kořen jenom jeden.

To samé u normal map... tam taky uvažuješ jenom tu polokouli, která je nad facem.

perry napsal:
Tady jsem našel zajímavý článek o balení normál: http://aras-p.info/texts/CompactNormalStorage.html. Líbí se mi ten přístup SphereMap.

Aras P. s náma jednu chvíli dělal na GLSL compileru. Chytrej týpek.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 8. květen 2011, 18:08:48    Předmět: Odpovědět s citátem

Tak jsem dal dohromady základní deferred renderer (amebint light, dir. lights, point lights (Work in Progress))

Počítám ve WorldViewSpace
Hloubku ukládám jako
VS:
depth = mul(pos, world * view).z
PS:
depth = depth / zFar.. (near nepočítám, je blízko k 0)

Rekosntukce
Pošlu rohy far stěny view frustra přenásobené view maticí
VS:
podle ID rohu vyberu ID rohu frustra (0 - 4)
PS:
depth = loadDepthFromTex (R32F)
pozice = depth * corner


Je normální, že bez deferred mám 1200 FPS
S deferred 80 FPS Very Happy (stejná scéna)

(Rozlišení 1920 x 1200 .. samozřejmě, když ho zmenším, fps jde nahoru)
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 9. květen 2011, 08:51:05    Předmět: Odpovědět s citátem

perry napsal:

Je normální, že bez deferred mám 1200 FPS
S deferred 80 FPS :D (stejná scéna)

(Rozlišení 1920 x 1200 .. samozřejmě, když ho zmenším, fps jde nahoru)


No, bohužel asi jo. Záleží jak na kterým HW. Musíš omezit fillrate. Navíc některý starší karty rendrování do textur moc nedávají.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
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: 9. květen 2011, 10:33:35    Předmět: Odpovědět s citátem

Hm... rozdíl mezi 1200 a 80 fps není tak velký (měřte frame time, ne frame rate!)

Navíc ujisti se že nemáš zapnutý v-sync, protože ten tě omezí na fps shodující se s frekvencí monitoru.

80 fps je celkem dobrý čas, zkus přidat další efekty prvně, ať vidíš co to udělá, jestli budeš mít stále přes nějakých 40 - 50 fps, tak se na další optimalizace prozatím můžeš vykašlat.
_________________
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
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 9. květen 2011, 14:37:10    Předmět: Odpovědět s citátem

Náročná grafika v 80 fps na 1920x1200 mi přijde v pohodě Je tam velký prostor pro snížení rozlišení pro méně výkonné grafiky.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 9. květen 2011, 15:09:01    Předmět: Odpovědět s citátem

Vilem Otte napsal:
Hm... rozdíl mezi 1200 a 80 fps není tak velký (měřte frame time, ne frame rate!)

V tomhle případě je to jedno. Pokud se fps zadá v absolutních číslech, pak se dá vždycky převést na frame time a zpět, i ten poměr mezi oběma čísly je tam stejnej (až na to, že je převrácenej).
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
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
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
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