.[ ČeskéHry.cz ].
Self shadow objektu

 
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
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 18. únor 2012, 12:01:52    Předmět: Self shadow objektu Odpovědět s citátem

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ý Wink). 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
Zobrazit informace o autorovi Odeslat soukromou zprávu
micky



Založen: 28. 02. 2008
Příspěvky: 348
Bydliště: Plzeň, Praha

PříspěvekZaslal: 18. únor 2012, 12:58:53    Předmět: Odpovědět s citátem

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. Razz
_________________
https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 18. únor 2012, 13:42:10    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
micky



Založen: 28. 02. 2008
Příspěvky: 348
Bydliště: Plzeň, Praha

PříspěvekZaslal: 18. únor 2012, 14:01:33    Předmět: Odpovědět s citátem

V tom případě mě už napadají nějaká krkolomnější řešení (dodatečná informace o zdroji stínu v textuře, více shadowmap...) - asi ti poradí někdo zkušenější. Wink
_________________
https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
michalferko



Založen: 29. 09. 2008
Příspěvky: 83

PříspěvekZaslal: 18. únor 2012, 14:26:17    Předmět: Odpovědět s citátem

A co tak renderovat do shadow mapy hraca s front-face cullingom namiesto back-face cullingu?
_________________
Moje minihry a ine projekty
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 18. únor 2012, 15:04:48    Předmět: Odpovědět s citátem

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
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: 18. únor 2012, 15:21:26    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 18. únor 2012, 16:25:45    Předmět: Odpovědět s citátem

dvě shadowmapy jsou řešení, dík Augi Wink
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: 18. únor 2012, 16:41:51    Předmět: Odpovědět s citátem

Hmm, ale teď mě napadlo asi nejjednodušší řešení, dokonce s jednou shadow mapou Smile

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
franz



Založen: 30. 07. 2007
Příspěvky: 1325

PříspěvekZaslal: 18. únor 2012, 17:27:59    Předmět: Odpovědět s citátem

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
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: 18. únor 2012, 17:37:08    Předmět: Odpovědět s citátem

Já osobně bych tam taky ten self-shadow nechal, ale je to Játrova hra...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Játro.m



Založen: 01. 02. 2010
Příspěvky: 230

PříspěvekZaslal: 18. únor 2012, 20:20:23    Předmět: Odpovědět s citátem

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š Smile a problém je vyřešen, až mě to bude trhat na výkonu, tak potom to budu řešit, díky Wink.
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: 18. únor 2012, 21:48:17    Předmět: Odpovědět s citátem

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 Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
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