Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 18. únor 2012, 12:01:52 Předmět: Self shadow objektu |
|
|
Nazdar,
ocitl jsem se v prekérní situaci, mám shadowmapu do které renderuju všechnu geometrii u které chci aby mi házela stíny, tj level, hráč a entity okolo, jak ukazuje screen. Problém je ten, že chci aby když hráč - model prochází stínem, tak aby na něm stín byl, aby hráč stín házel na level, ale aby neměl vlastní stín(to co je červeně zakroužkovaný ). Zkoušel jsem laborovat s cullingem, jediný co pomůže, je nerenderovat hráče do shadowmapy, ale to nevyřeší můj problém. Jsem už docela v koncích s nápadama.
Řešil jste už někdo podobnej problém?
Budu vděčnej za každou radu. |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 18. únor 2012, 12:58:53 Předmět: |
|
|
A co třeba vyrenderovat hráče do shadowmapy, ale při renderování (na obrazovku) už z shadowmapy nečíst (např. použít jiný shader/prázdnou texturu shadowmapy)? To by přece neměl být žádný problém.  _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 18. únor 2012, 13:42:10 Předmět: |
|
|
pokud jsem tě dobře pochopil, tak v téhle situaci mi sice zmizí self-shadow, budu mít stín hráče na zemi, ale zase příjdu o stín, když je ten hráč v nějakým stínu objektu, třeba nějaké zdi a to nechci, ten chci zachovat. |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
|
Návrat nahoru |
|
 |
michalferko
Založen: 29. 09. 2008 Příspěvky: 83
|
Zaslal: 18. únor 2012, 14:26:17 Předmět: |
|
|
A co tak renderovat do shadow mapy hraca s front-face cullingom namiesto back-face cullingu? _________________ Moje minihry a ine projekty |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 18. únor 2012, 15:04:48 Předmět: |
|
|
michalferko: to mě napadlo jako první, zkoušel jsem, front, back, kombinace, stín furt zůstává, jenom se mění počet artefaktů. Jo a culling mám puštěnej. |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 18. únor 2012, 15:21:26 Předmět: |
|
|
Obávám se, že v tomhle případě potřebuješ pro hráče a pro ostatní objekty jinou shadow mapu.
Nemusí to být přímo druhá textura - můžeš použít třeba texturu se dvěma kanálama. Do kanálů R a G vyrenderuješ celé okolí (oproti současné situaci jen v pixel shaderu budeš zapisovat do dvou kanálů).
Když pak budeš renderovat do shadow mapy model hráče, budeš výsledek pixel shaderu zapisovat jen do kanálu R (tj. stejně jako dosud).
Při aplikaci shadow mapy na ostatní objekty použiješ kanál R, při aplikaci na hráče kanál G.
Další možnost je využít "multiple render targets". Tj. měl bys dvě samostatné textury. Okolní objekty bys renderoval do obou textur (pomocí MRT), model hráče jen do jedné textury (jako dosud).
Tohle je IMHO jednodušší řešení, ale raději si ověř, jaký HW dnes MRT podporuje (IMHO většina, ale to je jen můj odhad). |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 18. únor 2012, 16:25:45 Předmět: |
|
|
dvě shadowmapy jsou řešení, dík Augi  |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 18. únor 2012, 16:41:51 Předmět: |
|
|
Hmm, ale teď mě napadlo asi nejjednodušší řešení, dokonce s jednou shadow mapou
1) Vyrenderuj do shadow mapy jen okolní objekty.
2) Vyrenderuj (do backbufferu, tj. "na obrazovku") model hráče (včetně aplikace stínů ze shadow mapy).
3) Vyrenderuj model hráče do shadow mapy.
4) Vyrenderuj do backbufferu okolní objekty (opět včetně aplikace stínů ze shadow mapy). |
|
Návrat nahoru |
|
 |
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 18. únor 2012, 17:27:59 Předmět: |
|
|
Náhodou self-shadow na characterech je žádoucí, která dnešní hra ho nemá? Akorát je potřeba zapracovat na optimalizaci vykreslení toho stínu, aby to nevypadalo tak hnusně a nedělalo artefakty. |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 18. únor 2012, 17:37:08 Předmět: |
|
|
Já osobně bych tam taky ten self-shadow nechal, ale je to Játrova hra... |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 18. únor 2012, 20:20:23 Předmět: |
|
|
Důvod proč tam není selfshadow, je že není to fotorealistická hra - to je jedna věc, kde by se hrálo na nějakou reálnost grafiky, další věc je ta franzi, že jsem si to dal schválně renderovat na zkoušku s velkou shadowmapou abych viděl, jak to vypadá, na tom robotovi je ten selfshadow divnej, na těch žebrech to dělá takovej divnej efekt, prostě se mi to nelíbilo, tak jsem kvůli tomu ani neimplementoval PSSM nebo něco podobnýho. Není ani diffuzně nasvětlenej, taky to v kombinaci té bílé barvy vypadalo divně.
BTW augi: když přemejšlím, to poslední řešení IMHO nejsem schopnej zrealizovat, kvůli tomu, že renderuju do dalšího FBO a tím pádem, nemůžu mít ten render rozdělenej jak ty píšeš - kvůli bindu bufferu, už teď jsem se tam strašně podělal se sortem transparence a dalších věcí co musej jít v určitým pořadí. Musel bych v tom případě mít dva finální FBO a z toho jednoho tahat vyrenderovanej model, asi je to ztráta místa ale ty dvě shadowmapy jsou asi to nejmenší zlo, protože při renderingu do shadowmapy musím používat GL_DEPTH_COMPONENT kvůli lenosti, že mám několik vertex shaderů s transformací a musel bych zase přepisovat jádro toho rendereru.
Uzavřeme to prostě jsem líná veš a problém je vyřešen, až mě to bude trhat na výkonu, tak potom to budu řešit, díky . |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 18. únor 2012, 21:48:17 Předmět: |
|
|
Jasný. Ono záleží, jak máš vymyšlenou celou renderovací pipeline - proto jsem raději popsal více variant, ať si vybereš, která ti sedne nejlíp  |
|
Návrat nahoru |
|
 |
|