.[ ČeskéHry.cz ].
D3D - Simulace denního cyklu den-noc pro 2D hru ?

 
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
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 17. červen 2009, 15:16:42    Předmět: D3D - Simulace denního cyklu den-noc pro 2D hru ? Odpovědět s citátem

Dobrý den.

Zkoušel jsem najít nějaké články o tomto tématu na gamedev.net ale nic takového jsem tam nenašel.

Chtěl bych přidat do své 2D hry denní cyklus, čily bych chtěl regulovat intenzitu denního světla podle času ve hře. (světla a stíny už mám)

Napadlo mě že se to dělá přes ambient světlo, ale nepodařilo se mi docílit požadovaného efektu. Sprajty renderuji pomocí texturovaných obdelníků...

Věděl by si někdo rady jak na to ?Smile

Děkuji za případné odpovědi.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 17. červen 2009, 16:57:45    Předmět: Odpovědět s citátem

Tak jestli uz mas svetla a stiny, tak bys mel mit i Slunce (smerove svetlo v nekonecnu)? A pak staci regulovat jen toto jedno svetlo (intenzitu a smer)

A jak mas delany svetla ve 2D? Ja v Krkalovi pouzivam vyskove a normalove mapy, tudiz umim pro kazdy pixel spocitat korektni nasviceni. Stiny momentalne neumim.
_________________
- play with objects - www.krkal.org -
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 17. červen 2009, 17:24:43    Předmět: Odpovědět s citátem

MD napsal:
Tak jestli uz mas svetla a stiny, tak bys mel mit i Slunce (smerove svetlo v nekonecnu)? A pak staci regulovat jen toto jedno svetlo (intenzitu a smer)

A jak mas delany svetla ve 2D? Ja v Krkalovi pouzivam vyskove a normalove mapy, tudiz umim pro kazdy pixel spocitat korektni nasviceni. Stiny momentalne neumim.


No já ty světla mám opravdu jednoduché, je to jen textůra ve tvaru elipsy a renderuji to textůru světla s "additive blending mode".

Stíny řeším tak že mám textůru stínu v každém směru, pak jen zjištuji jestli je ten objekt v dosahu světla, pokud ano tak renderuji tu textůru stínu v požadovaném směru.

Zkoušel jsem to denní světlo nastavovat přes D3DRS_AMBIENT, nastavit nějaký globální materiál a renderovat všechny objekty, jenže takhle je každý ten objekt ve stejné barvě jako ta barva toho ambient světla.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Houp



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

PříspěvekZaslal: 17. červen 2009, 17:30:05    Předmět: Odpovědět s citátem

Není to možná nejrychlejší a nejefektivnější způsob, ale co přes celou plochu překreslovat částečně průhledný obdélník. Průhlednost dle denní doby?
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 17. červen 2009, 17:35:17    Předmět: Odpovědět s citátem

A případně bych doporučil spočíst si jeho barvu a intenzitu podobně jak se to dělá při počítání atmospheric scatteringu (Rayleigh scattering je na oblohu, Mie scattering + Henyey/Greenstein by ti měly dát správnou barvu slunce ... jenom na tu barvu to jde ale samozřejmě zkrátit, tak abys spočetl přímo ji), jako vedlejší produkt dostaneš intenzitu (což se hodí!).
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 17. červen 2009, 17:46:47    Předmět: Odpovědět s citátem

Houp napsal:
Není to možná nejrychlejší a nejefektivnější způsob, ale co přes celou plochu překreslovat částečně průhledný obdélník. Průhlednost dle denní doby?


ano, presne timto smerem bych se v tvem pripade taky vydal s tim ze treba svetla muzes kreslit az po vykresleni tohoto full screen quadu (v noci by mely vice osvetlovat..). Pokud muzes pouzivat shadery tak se v post process fazi da s barvami v texture udelat skoro cokoliv.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 17. červen 2009, 19:27:12    Předmět: Odpovědět s citátem

Děkuji za odpovědi Smile

Zkusil jsem ten trik s obdelníkem přes celou obrazovku, nejprve jsem vykreslil terén, pak objekty, pak ten obdelník a nakonec světla.

Problém je v tom že když zvyšuji alfa kanál toho obdelníku, tedy chci aby byla více tma, tak se zároven snižuje i intenzita světel, přitom by měla být stejná protože ty světla vykresluji až po vykreslení toho obdelníku.

Tu barvu toho obdelníku jsem nastavil na ARGB(255, 0, 0, 0), tedy jsem chtěl aby byla úplná tma a světla svítila, jenže ty taky nejdou vůbec vidět.

Napadlo mě že musím taky upravit funkci pro vykreslování světel, hlavně pak alpha blending, no tak jsem si s tím zkusil pohrát a nakonec jsem nic nevymyslel...

Blending nastavuji pro vykreslování světel takto:
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_DESTCOLOR);
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);

Taky nastavuji TextureStageState na:
SetTextureStageState(0,D3DTSS_COLOROP, D3DTOP_MODULATE2X);
SetTextureStageState(0,D3DTSS_COLORARG1, D3DTA_TEXTURE);
SetTextureStageState(0,D3DTSS_COLORARG2, D3DTA_DIFFUSE);

Embarassed
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