.[ ČeskéHry.cz ].
Jednotrojúhelníkový Skybox

 
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: 7. duben 2008, 19:04:04    Předmět: Jednotrojúhelníkový Skybox Odpovědět s citátem

Člověk stále slyší o chytré a rychlé implementaci skyboxu pomocí jednoho trojůhelníku (a jedné textury ?), ale ať hledám jak hledám, nikde žádný článek toto popisující.

Jak to tedy lze provést ?

Děkuju.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



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

PříspěvekZaslal: 7. duben 2008, 19:30:11    Předmět: Odpovědět s citátem

Myslim, ze obrazek nize ti pomuze v predstave, jak je to realizovane:



Jen doplnim, ze na hodne starych grafikach (napr. GF 4 MX) to neni dobre reseni, protoze tyhle grafiky zahazujou az jednotlive pixely (spotrebovavas pixel fillrate). Soudobe ATIny a dnesni grafiky uz zpracujou geometrii tak, ze filluje jen pixely, ktere zustanou ve viewportu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Khaj



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

PříspěvekZaslal: 7. duben 2008, 19:39:59    Předmět: Odpovědět s citátem

Peknej trojuhelnicek, diky Very Happy, tohle jsem jeste nastesti vymyslel sam (nechavam takhle project textury pixel shaderem kdyz je chci prez celou obrazovku).

Mno me by spis zajimalo jak:
I) lze zcucnout 6 textur skyboxu (nahore vlevo vpravo dole vepredu vzadu) do jedny a u te pak
II) namapovat jeji koordinaty na tenhle trojuhelnik kdyz znam matici pohledu a 'velikost' skyboxu.

Tedy doufam ze tohle je mozne a ze jsem cely koncept pochopil spravne Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



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

PříspěvekZaslal: 7. duben 2008, 20:05:06    Předmět: Odpovědět s citátem

Ak to chapem ja dobre, tak by skor bola dobra jedna textura na skydome/skysphere a z tej by si to uz nejako na ten trojuholnik vedel namapovat... aj ked neviem ako Smile
_________________
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
Khaj



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

PříspěvekZaslal: 7. duben 2008, 20:10:27    Předmět: Odpovědět s citátem

No prave Smile ... takze ted je nas vic a muzeme zacit skandovat "My chceme odpoved My chceme reseni" a on urcite prijde nejaka hlava pomazana Very Happy

Aby to nebylo uplne OT tak jedinej napad co by byl bylo
1. ulozit to do obdelniku jako dva pasy po 3 texturach - pohled odleva doprava (prez dopredu) a pohled odzhora dolu(prez dozadu)...
2. neco se sferickejma souradnicema (ale co ?)

u zadnyho z tohohle mi ale uz nenapada jak to provest Laughing
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: 7. duben 2008, 20:56:50    Předmět: Odpovědět s citátem

Použijte cubemapu. Cubemapa je typ textury, která v sobě obsahuje 6 textur. Představte si krychli a na ní namapované ty textury. Koordináty pro takovou texturu jsou 3D - jsou to vektory, které když dáš do středu té krychle, tak vezmou pixel, který protnou s hranou krychle. Příklad:



Na skybox jak dělané a hodí se to mimojiné i na zrcadlení od objektů (prostě cubemapu obsahující okolí objektu namapuješ na model atd). Dále výhodou je, že mapování cubemapy je radiální, nikoliv planární, tzn. nepůjdou vidět rohy, které vznikají při planárním mapování na normální krychli.

Takže stačí vykreslit trojúhelník, namapovat cubemapu, spočítat pro každý ze třech vertexů ty 3D koordináty a je vystaráno.

Vzorec na koordináty je myslím:
skyboxMatrix = (viewMatrixWithoutTranslation*projectionMatrix)^-1; // to si spočítáte někde bokem, koordináty se počítají:
texcoord = mul(skyboxMatrix, clipspaceVertexPos); // vezmete přímo pozici vertexu toho jednoho trojúhelníku v clip-space

EDIT: Ale jako čekal bych, že cubemapy budete znát. To je v HW už od Riva TNT a na pěkný efekty je to základ.
_________________
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: 1824

PříspěvekZaslal: 7. duben 2008, 23:19:25    Předmět: Odpovědět s citátem

Jasne, ze pozname cubemapy, no nedoslo nam, ze takto pomocou 1 trojuholnika a cubemapy vyrobime "skybox" Very Happy
_________________
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: 7. duben 2008, 23:53:26    Předmět: Odpovědět s citátem

Jako klidně to dělejte na krychli, to je celkem jedno, ale hlavně je potřeba použít tu cubemapu a ne 6 textur. Wink (budete mít 1 draw call a ne 6 + radiální mapování).
_________________
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