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: 7. duben 2008, 19:04:04 Předmět: Jednotrojúhelníkový Skybox |
|
|
Č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 |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 7. duben 2008, 19:30:11 Předmět: |
|
|
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 |
|
|
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 7. duben 2008, 19:39:59 Předmět: |
|
|
Peknej trojuhelnicek, diky , 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 |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 7. duben 2008, 20:05:06 Předmět: |
|
|
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 _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
Khaj
Založen: 16. 01. 2008 Příspěvky: 49
|
Zaslal: 7. duben 2008, 20:10:27 Předmět: |
|
|
No prave ... takze ted je nas vic a muzeme zacit skandovat "My chceme odpoved My chceme reseni" a on urcite prijde nejaka hlava pomazana
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 |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 7. duben 2008, 20:56:50 Předmět: |
|
|
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 |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 7. duben 2008, 23:19:25 Předmět: |
|
|
Jasne, ze pozname cubemapy, no nedoslo nam, ze takto pomocou 1 trojuholnika a cubemapy vyrobime "skybox" _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 7. duben 2008, 23:53:26 Předmět: |
|
|
Jako klidně to dělejte na krychli, to je celkem jedno, ale hlavně je potřeba použít tu cubemapu a ne 6 textur. (budete mít 1 draw call a ne 6 + radiální mapování). _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
|