dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Gaismas spilgtuma maiņa caur transparent objektu
Goto page Previous  1, 2, 3, 4, 5  Next
 
dev.gamez.lv Forum Index -> Microsoft DirectX
View previous topic :: View next topic  
Author Message
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Mar 22, 2010 5:35 pm    Post subject:

Jā, vaina ir secībā.
Parastai alfa blendošanai svarīga ir secība (kurš ir source, kurš ir destination) Tāpēc caurspīgus objektus spēles zimē ar šādu pseidokodu):
Code:
Katram necaurspīdīgam objektam {
  objekts.Zīmēt();
}

poligoni = Masīvs no caurspīdīgiem poligoniem;
poligoni.Sakārtot(Pēc distances no kameras); // tālākos likt sākumā
Katram poligonam no poligoni masīvi {
  poligons.Zīmēt(); // ar ieslēgtu blendingu
}


Še lasi vēl - pilns internets ar informāciju:
http://blogs.msdn.com/shawnhar/archive/2009/02/18/depth-sorting-alpha-blended-objects.aspx
http://www.toymaker.info/Games/html/render_states.html#alphas
Quote:
Note: in order to get correct blending you often have to sort your transparent objects before rendering.


Ir metodes kas ļauj zīmēt savādākā secībā, bet vienkārši tas nav.
Depth peeling, piemēram:
http://developer.nvidia.com/object/Interactive_Order_Transparency.html
http://www.humus.name/index.php?page=3D&ID=75
http://www.humus.name/index.php?page=3D&ID=76
Back to top
View user's profile Send e-mail
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Mon Mar 22, 2010 6:08 pm    Post subject:

Quote:
Spēle ir iecerēta kā pirmo Resident Evil stilā, kur ir statiskās kameras.

Minēšu projekta nosaukumu: Evita 2?
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Tue Mar 23, 2010 8:01 am    Post subject:

Elvman, nē, E.V.I.T.A. ir stealth action, nu kā Metal Gear, līdz tam projektam vēl tālu. Bet šis ir tāds Third Person Cinematographic Quest. Smile
Pašlaik gatavs ir tikai menu.

---------------
Tomēr nav skaidrs. Caurspīdīgums ir, jau pašā sākumā bija. Taču tas nekādi neietekmējas no gaismas, jo informāciju tak ņem no materiāla Sources, nevis gaismas. SourceAlpha strādā lieliski, kur ir melnie reģioni, tur arī gaisma ir necaurlaidīga.

Iespējams, problēmu rada tas, ka ir scēnā vēl divi elementi - gaismu mesh un shadow mesh.
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Mar 23, 2010 8:51 am    Post subject:

Nezinu, kas tev tur problēmas rada, bet sneiks jau tev pateica kā alfa blendings strādā. Tas lasa jau uzrenderētu pikseli freimbuferī - ar visu tavu gaismu, un tu satumšina atkarībā no stikla parametriem. Tāpēc tas (pikselis) jāzīmē pirms stikla zīmēšanas. Citādāka kārtība radīsi tikai dīvainus [d]efektus. Neviens stikls nekad neņems informāciju no gaismas sources. Tas tikai ņems informāciju no jau uzrenderētiem pikseļiem. Palasi taču kā apgaismojums GL/DX'ā strādā. Apgaismojums pielietojas uzreiz kopā ar materiāla informāciju renderējot objektu - pēc tam tas tiek aizmirsts un operēts tiek jau ar gatavu pikseli (logu blendošanai, postprocessingam, hdr, whatever kam citam).
Back to top
View user's profile Send e-mail
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Tue Mar 23, 2010 9:22 am    Post subject:

Quote:
Bet šis ir tāds Third Person Cinematographic Quest

Tev atrast vietu, kur tu tieši šos pašus vārdus saki par Evitu?
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Tue Mar 23, 2010 10:07 am    Post subject:

Nu, nu ... Rolling Eyes
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Tue Mar 23, 2010 11:34 am    Post subject:

Quote:
Elvman, nē, E.V.I.T.A. ir stealth action, nu kā Metal Gear
Manuprāt vārds nepareizi izvēlēts.. Very Happy
It īpaši tāpēc, ka.. http://dev.gamez.lv/viewtopic.php?t=709&start=0 -6tais posts.
Quote:
Taču tas nekādi neietekmējas no gaismas

Vēl vairāk jautājumu rodas.. kāpēc tam ir jāietekmējas no gaismas? Un laikam otrreiz jājautā - ko tu gribi panākt? Very Happy
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Tue Mar 23, 2010 11:48 am    Post subject:

Ir tur tajos žanros pāris mazas atšķirības.
E.v.i.t.a. ir vairāk domāta kā kinematogrāfiskais kvests ar stealth action elementiem.

Bet šī spēle, kas tagad tiek domāta, vairāk velk uz Resident Evil pirmssākumiem, kad bija statiskās kameras.
Otro variantu ir vieglāk izveidot.

Kāpēc jāietekmējās no gaismas? Nu, kā tad vēl? Formulu jau uzrakstīju.
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Tue Mar 23, 2010 12:03 pm    Post subject:

Neatradu nevienu formulu...
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Tue Mar 23, 2010 12:06 pm    Post subject:

snake5 wrote:
Neatradu nevienu formulu...


Tas_ko_redzu = mesh[1].materialcolor - transparent_object.opacity(40);

To laikam vajag nedaudz pārveidot:
Tas_ko_redzu = mesh[1].pixel.color.xyz - transparent_object.opacity(40).xyz;

Pašlaik ir tā:

Tas_ko_redzu = mesh[1].materialcolor;

Netiek ņemta vērā kopējā tās koordinātes pixeļa informācija, kuru veido gaisma kopā ar materiāla krāsu. Varbūt nepareizi esmu ierakstījis kodā?
Varat papētīt to Shadowvolume piemēru, to koda daļu, kas atbild par mesh ielādi caur šeidera pasiem. Uztaisiet otru modeļa ielādi un atbilstošos pasus.
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Mar 23, 2010 12:15 pm    Post subject:

Tas_ko_redzu = mesh[1].pixel.color - transparent_object.opacity(40);
Šo tu vari dabūt sekojošā veidā:
1. uzzīmē mesh
2. ieslēdz blend modi/šeideru kombināciju, kas atņem no destination krāsas (mesh) source krāsu (transparent objekts) pareizināt ar alfu (40).
3. zīmē savus transparentos objektus ar 40% alfu.

Kā jau sneiks teica - izlasi formulas pēc kurām blend modes darbojas un pielieto tās. OpenGL'am, piemēram, tas ir aprakstīts šeit:
http://www.opengl.org/sdk/docs/man/xhtml/glBlendEquation.xml
http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Tue Mar 23, 2010 1:00 pm    Post subject:

Quote:
Tas_ko_redzu = mesh[1].pixel.color.xyz - transparent_object.opacity(40).xyz;

Kas tev tur (ne)ietekmējas no gaismas?
Kāds tur vispār sakars ar gaismu?
Šajā formulā no vienas krāsas tiek atņemta otra..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Tue Mar 23, 2010 1:17 pm    Post subject:

Laikam ne tā uzrakstīju. Wink

Vajag šādi:

Pikselis, ko redzam ekrānā = pixelis no mesh virsmas - pixelis no stikla virsmas.
Rezultātā iegūstam samazinātu gaismu.

Pixelis no mesh virsmas = gaisma * mesh.color.

Nu kaut kā tā. Labi, maziņš pāris dienu pārtraukums.
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Mar 23, 2010 1:20 pm    Post subject:

EDDY wrote:
Pikselis, ko redzam ekrānā = pixelis no mesh virsmas - pixelis no stikla virsmas.
Rezultātā iegūstam samazinātu gaismu.

Pixelis no mesh virsmas = gaisma * mesh.color.

Tas ir tieši tas, ko es tev uzrakstīju šeit: http://dev.gamez.lv/viewtopic.php?p=23534#23534
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Tue Mar 23, 2010 2:22 pm    Post subject:

Quote:
Rezultātā iegūstam samazinātu gaismu.

Samazinātu gaismu neviens neiegūst. Vispār jau gaisma datorgrafikā ir kaut kas pavisam cits, sinonīms gaismas avotam.
Bet viss, kas aiz stikla, izskatīsies tumšāks..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Microsoft DirectX All times are GMT + 2 Hours
Goto page Previous  1, 2, 3, 4, 5  Next
Page 3 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group