Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 14. prosinec 2011, 14:03:17 Předmět: Deferred rendering, obloha a zrcadlo |
|
|
Cau,
Nadpis tematu sice vypada jako nazev pohadky, ale neni. Mam problem.
Renderuji scenu pres deferred, vse je ok. Kdyz ovsem potrebuju scenu ozrcadlit pro vodu, nesedi mi obloha a mam mezi nebem a jeho odrazem pas, takze nesedi na sebe. Ostatni objekty sedi presne.
Renderuji nebe jako prvni, mam vypnuty ztest a zapis do zbufferu. V deferred shaderu zapisuji na hloubku "nekonecno". Kdyz nebe kreslim jako objekt (proste kupoli) se zapisy hloubek, tak je vse ok (jenomze pak mam zakryty zbytek sceny )
Predpokladam nejakou blbou chybu, ale proste ji nevidim.
Pozn.: na clipping pres rovinu mam upravenou projekcni matici, obliuqe frustrum culling. _________________ Perry.cz |
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 14. prosinec 2011, 15:53:25 Předmět: |
|
|
A co vykreslit normálně s hloubkou, ale nepřepisovat si hloubku již vykreslených modelů? _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 14. prosinec 2011, 16:17:09 Předmět: |
|
|
Pro představu jak to vypadá:
Ty "poklice" by měli ležet na sobě a ne aby mezi byl ten pruh _________________ Perry.cz |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 14. prosinec 2011, 18:51:53 Předmět: |
|
|
Tak jsem (asi) našel chybu... resp. teď to funguje
Na clipping používám Oblique Frustrum Culling (úprava projekční matice). Tím, jak jsem oblohu renderoval v "nekonečnu", tak se blbě uřízla.
Takže finální řešení: Oblique matici mít na objekty a ty clipovat, u nebe se na clipping vykašlat a pro oboje ho renderovat celé - sice se to trochu překrývá a nesedí to úplně na 100%, ale pokud to někdo neví a nehledá, chybu nevidí. _________________ Perry.cz |
|
Návrat nahoru |
|
|
Spytihněv
Založen: 05. 04. 2011 Příspěvky: 547 Bydliště: Praha
|
Zaslal: 14. prosinec 2011, 19:17:14 Předmět: |
|
|
Sice to nesouvisí, ale pro zajímavost širokoúhlý ořez jako součást zrcadla ve hře Assassin's Creed Revelations
|
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 15. prosinec 2011, 02:49:49 Předmět: |
|
|
perry napsal: |
Tak jsem (asi) našel chybu... resp. teď to funguje
Na clipping používám Oblique Frustrum Culling (úprava projekční matice). Tím, jak jsem oblohu renderoval v "nekonečnu", tak se blbě uřízla.
Takže finální řešení: Oblique matici mít na objekty a ty clipovat, u nebe se na clipping vykašlat a pro oboje ho renderovat celé - sice se to trochu překrývá a nesedí to úplně na 100%, ale pokud to někdo neví a nehledá, chybu nevidí. |
Oblohu je lepší renderovat přesně na zadní ořezávací rovině. Udělá se to tak, že se z vertex shaderu pošle pozice xyww. Oblohu je také lepší renderovat až na konec, jelikož ji obvykle stejně překrývají objekty v popředí. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 15. prosinec 2011, 11:21:52 Předmět: |
|
|
Jj.. renderovat oblohu jako poslední jsem zkoušel... jenomže pak mi obloha překryla scénu (skydome mam malý a pohybuju s ním spolu s kamerou). Pravda, to s tim xyww jsem nezkoušel...zkusim to.. díky _________________ Perry.cz |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 15. prosinec 2011, 17:59:27 Předmět: |
|
|
glDepthRange je to, co potřebuješ _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 17. prosinec 2011, 01:42:15 Předmět: |
|
|
perry napsal: |
jenomže pak mi obloha překryla scénu |
Pak to máš špatně. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 17. prosinec 2011, 10:46:22 Předmět: |
|
|
To, co sem psal, to taky vyřeší, ne? A IMHO mnohem flexibilněji. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. prosinec 2011, 10:54:18 Předmět: |
|
|
Ještě jsem se nedostal k tomu to otestovat Ale flexibilnější mi přijde Markovo řešení, glDepthRange nemůžu pod DX najít _________________ Perry.cz |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 17. prosinec 2011, 14:54:07 Předmět: |
|
|
perry napsal: |
Ještě jsem se nedostal k tomu to otestovat Ale flexibilnější mi přijde Markovo řešení, glDepthRange nemůžu pod DX najít |
D3D10_VIEWPORT::MinDepth a MaxDepth. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. prosinec 2011, 17:12:59 Předmět: |
|
|
Díky Super... už to funguje i na vykreslení nakonec... _________________ Perry.cz |
|
Návrat nahoru |
|
|
|