.[ ČeskéHry.cz ].
Matice DX vs OGL

 
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
Khaj



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

PříspěvekZaslal: 31. květen 2009, 13:10:09    Předmět: Matice DX vs OGL Odpovědět s citátem

Pozorovani: V DirectX v shaderech se bezne vertexy nasobi transformacni matici zprava (protoze ukladani matic v registrech ma smysl jen po sloupcich, jinak by se nekde musela delat zbytecna transpozice).

Po prechodu na OpenGL si sice uzivam obecneho luxusu, ale pri mych prvnich pokusech s FFP a nahravanim (tech samych) matic jsem zjistil divne veci...
jednak OGL nefunguje s projekcnima maticema z DirectX a jednak jsou vsechny me stare matice vzhledem k DX transponovane.
Nevite, kde jsou skryty tyto rozdily?

Je to kiks v dokumentaci (ktera rika ze se matice ukladaji po sloupcich), nebo je to tim, ze FFP nasobi vertexy matici zprava misto zleva (a znasilnuje registry v grafarne)?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



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

PříspěvekZaslal: 31. květen 2009, 14:10:16    Předmět: Odpovědět s citátem

http://glprogramming.com/red/images/Image49.gif
takze to je takto

x = M*P*v
kde M je modelview a P projekcna matica. v je vertex a x su vysledne homogenne suradnice.

pre teba bude vhodne pouzivat glLoadTransposeMatrix() s glMultTransposeMatrix().
glMultMatrix(M) nasobi C=C*M kde C je aktualna matica a teda aj vysledna.

za dalsie OpenGL a DX maju rozdielny suradnicovy system. OpenGL pouziva pravotocivy system a DX tusim lavotocivy.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 31. květen 2009, 14:10:32    Předmět: Odpovědět s citátem

V OpenGL je to obráceně než v DX - tedy matice jsou vzájemně transponované a násobení probíhá z druhé strany. Navíc mají obě GAPI různý systém souřadnic (levotočivý vs. pravotočivý).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Khaj



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

PříspěvekZaslal: 31. květen 2009, 16:36:48    Předmět: Odpovědět s citátem

Diky moc, docela jsem se bal ze je chyba u mne ... stacilo zacit ukladat matici po radcich a problem se vyresil (radsi nez loadTranspose, to zni strasne pomalu). Levotocivost nebo pravotocovost bych mel byt schopen kontrolovat sam pomoci projekcni matice.

Jenom nechapu jak to udelali, ze oba fungujou rozdilne... jeden z nich teda musi provadet jednu transpozici navic a byt diky tomu pomalejsi. Nebo ne?
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: 31. květen 2009, 19:02:53    Předmět: Odpovědět s citátem

Teoreticky není problém používat stejné matice v obou 3D API. Jedinej problém bych viděl v tom, že v clip-space je viditelná část osy Z v OpenGL v intervalu [-1,1], zatímco v D3D je v [0,1]. Clip-space je v obou 3D API levotočivý.

Teď s tím transponováním a proč D3D funkce (které nemusíte používat) násobí matice z druhé strany. Přece platí tohle:
(A * B)^T = B^T * A^T
Takže je to po transponování s OpenGL ekvivalentní.

EDIT:
Transpozice není na škodu. V případě skalárních (NVIDIA) a superskalárních (ATI) architektur je to jedno. U DX9 GPU to jedno být nemusí, ale to nevíme. Je možné, že ty GPU mají implementované rychlé násobení s transponovanou maticí. Pseudo-asm (D3D i OGL) nemá moc společného s tím, jak to v GPU funguje, i když nějaký náznak tam je.
_________________
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
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