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

Nedaudz citādāka pieeja šeideru optimizācijai
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Pļāpātuve
View previous topic :: View next topic  
Author Message
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Tue Sep 01, 2009 7:36 pm    Post subject: Nedaudz citādāka pieeja šeideru optimizācijai

Nesen atradu šo: http://zeuxcg.blogspot.com/2007/10/my-own-lighting-shader-with-blackjack.html
Man jau šķiet, ka tur var smelties dažas noderīgas idejas.. Wink
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Sep 01, 2009 11:11 pm    Post subject:

Tas ir tieši tas, sneik, ko mēs tev visu laiku esam mēģinājuši ieskaidrot visur citur. Ka ar šeideri var ērtāk un vieglāk panākt gribēto rezultātu - šajā piemērā "single-pass lighting shader for 8 lights with diffuse, specular and attenuation, of course with normal map". Gan lielākas optimizācijas iespējas (tev kā programmētājam), gan veids kā to videokartei pateikt (nevis simts stāvokļus slēgāt iekšā/ārā).
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Wed Sep 02, 2009 1:35 am    Post subject:

Nu tas jau man it kā bija skaidrs, ka ar šeideri ir ērtāk / vieglāk. Bet kad pieķeršos 3D spēlēm, būs laikam jāsāk domāt par FFP lietošanas atmešanu... Varbūt ne pavisam, bet tomēr.. 3d spēles pat bez šeideriem neiet labi uz videokartēm, kuras nav tik ātras..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Wed Sep 02, 2009 7:50 am    Post subject:

Es gan kaut kā atceros, ka tas tev nebija vis skaidrs, citādi jau nebūtu bijušas diskusijas pa N-lapusēm, kurās tu mēģini mūs pārliecināt, ka ir jālieto FFP, nevis šeideri. Slikums vecos logus meklēt tagad.
Un vai tas būtu kāds brīnums, ka 3D speles neiet labi uz videokartēm, kuras nav ātras? Man tas šķiet ļoti dabiski, ka arī 2D (un 1D) spēles neiet labi uz videokartēm/datoriem, kuri nav tik ātri.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Wed Sep 02, 2009 11:56 am    Post subject:

Tikai snake paarprata visu to sisteemu, kaa jau iesaaceejs, GPU darba optimizaacija notiek ar n'vidia gpu perf hud tooli (vai ja ir ATI tad ir kautkaads, bet toolji ATI saliidzinaajumaa ar nvidia ir meesli) Un tad mees mekleejam bottleneckus visaa aplikaacijaa - saakot ar to vai ir vispaar GPU limiteets, tad kura tiesi dalja no visas pipeline ir bottlenecks - interoplatori, vertex shaders, pixel shaders, texture brandwidth, draw calls etc. Un optimizeejam tikai bottlenecku.

Dzeks postaa ieteica kautkaadas optimizaacijas, bet tas nenoziimee ka vinjas ir jaaizmanto un jaaaieguust zemaaka kvalitaate. Taapeec ka normaali tev nebuus visu laiku 8 gaismas teiksim un neviens nav teicis ka konkreetaa persona nevareeja vienkaarsi uzraksiit 2 pass 4 lights un dziivot ar taadu pasu performanci jo vins ir CPU limiteets anyway.
_________________
Izraadaas ka dazu dev.gamez.lv lietotaaju absurdaa ignorance meedz eksisteet arii augstaakas paakaapees : http://www.gamedev.net/community/forums/topic.asp?topic_id=411552
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Wed Sep 02, 2009 2:24 pm    Post subject:

Storm, topiks ir par šeideru optimizāciju, nevis GPU darba optimizāciju, man šķiet, ka tu drīzāk esi kaut ko pārpratis.
bubu, idejas aug. Agrāk likās, ka varēšu mierīgi supportēt arī vecās videokartes bet izskatās, ka tam darbam nevar tik lielu prioritāti uzstādīt. Vismaz ne 3D spēlēm.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Sep 12, 2009 11:06 pm    Post subject:

Nu tagad es pats arī pamēģināju kaut ko optimizēt/samazināt lietoto instrukciju skaitu.

ShadowMap (DX SDK August 2006 paraugs)
Izveidoju PCF3x3 ēnas filtru, izdevās nooptimizēt līdz 64 (vai pat nedaudz mazāk) instrukcijām (ps_2_0).

Jaunais šeidera kods (tur ir daudz citu eksperimentālu modifikāciju, bet svarīgākais slēpjas PixScene3 funkcijā):
http://paste.php.lv/90176ec4fb7737a6f4cdaf9aeb88dfdd?lang=c
Te ir oriģinālais kods:
http://paste.php.lv/ee8371f1c7983a6006d3e6be718b8e4e?lang=c

Izmantoju vektorizācijas padomu no tā raksta, bet mad_sat instrukcijas noderīgumu vajadzēja atklāt pašam..
..sākumā kods bija tāds:
Code:
pcil *= 0.25;

        // Light it
   Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * pcil * slcone + g_vLightAmbient ) * g_vMaterial;

..pēc optimizācijas:
Code:
pcil = saturate( pcil * 0.25 - slcone );

        // Light it
   Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * pcil + g_vLightAmbient ) * g_vMaterial;

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



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Sep 13, 2009 1:56 am    Post subject:

Manupraat fail. Nafig tev triis dazaadi maniigie prieks viena un taa pasa? Tur kur tev taas 12 saskaitiisanas vareeja buut viens dot produkts un 3 saskaitiisanas citaa vietaa. Turklaat 3x3 pcf = galiigi nesmuki. 5x5 un 7x7 ir ok, bet 3x3 reti kad buus ok.
_________________
Izraadaas ka dazu dev.gamez.lv lietotaaju absurdaa ignorance meedz eksisteet arii augstaakas paakaapees : http://www.gamedev.net/community/forums/topic.asp?topic_id=411552
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Sep 13, 2009 3:18 am    Post subject:

Quote:
Nafig tev triis dazaadi maniigie prieks viena un taa pasa?

Kur tu tos izraki?
Quote:
Tur kur tev taas 12 saskaitiisanas vareeja buut viens dot produkts un 3 saskaitiisanas citaa vietaa.

Negribi pastāstīt, kā? Es izmēģināju tur dažādus variantus, bet rezultāts bija pavisam neapmierinošs. Vispār jau tādu variantu, par kādu tu te stāsti, neredzēju, jo.. tas, ko tu piedāvā, izskatās diezgan neiespējami. Bet nu lūdzu, pārveido kodu un parādi, varbūt tomēr kļūdos. Wink
Quote:
Turklaat 3x3 pcf = galiigi nesmuki.

Man jau pašam šķiet, ka tieši labi - nav pārāk "mīkstas" ēnas un nav pārāk asas malas ēnām..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Sep 13, 2009 10:54 am    Post subject:

Nesaprotu, kas tur optimizēts. PixScene no PixScene3 pie tam pamatīgi atšķirās funkcionalitātē - viens varbūt izskatās pēc PCF 3x3 filtra, taču otrs galīgi ne - tas lasa 4x4 pikseļus. Kā var divas dažādas lietas salīdzināt performancē?? Tas atgādina "es uzrakstīju ātrāku vector'u" topiku.


Code:
ShadowTexC.y = 1.0f - ShadowTexC.y;

ir lieka instrukcija. Šadowmapi vajag ģenerēt jau uzreiz pareizā orientācijā, tad nebūs šitā jāgroza/jāflipo pie izmantošanas.

Un toties uz SM3, kas ir >>50% lietotājiem-spēlētājiem, tavs šeideris būs lēnāks. Dēļ dinamiskā brančinga, kas PixScene funkcijā nerēķina PCF filtru, ja tas nav vajadzīgs - tu turpretīt to rēķināši vienmēr.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Sep 13, 2009 12:33 pm    Post subject:

Oriģinālā PCF3x3 koda man diemžēl nav. Bet optimizēt nācās gan savu kodu, gan to, kas jau bija oriģinālajā shadowmap.fx failā.
paste.php.lv 1. koda aprakstā paskaidroju, ka nav tādas pašas funkcijas.
Un es nesalīdzinu darbības ātrumu, es vienkārši centos iespiest šeideri 64 instrukciju slot'os.
Tāpēc jāskatās oriģinālajā kodā līdzīgās koda rindas.
Quote:
ir lieka instrukcija.

Nav mans darbs. Un programmas sourci es neaiztiku, tāpēc arī šeiderī nelaboju neko tādu.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Sep 13, 2009 6:50 pm    Post subject:

Tad izreekini Snake cik te instrukcijas un ko vins izdara:
Code:
float4 sum;
float res;

sum = float4( whatever);
sum += float4( whatever);
sum += float4( whatever);
sum += float4( whatever);

res = dot(sum, float4(1.0f, 1.0f, 1.0f, 1.0f));


Bubu - viegli pateikt - gruuti izdariit - nav taadi panjeemieni, kuriem nevajag prieksdarbus, ar kuriem var pateikt ir vai nav nepieciesami visi samplji...
_________________
Izraadaas ka dazu dev.gamez.lv lietotaaju absurdaa ignorance meedz eksisteet arii augstaakas paakaapees : http://www.gamedev.net/community/forums/topic.asp?topic_id=411552
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Sep 13, 2009 7:54 pm    Post subject:

Quote:
Tad izreekini Snake cik te instrukcijas

Nu mēģināšu.. 1 mov, 3 add, 1 dp4
Quote:
un ko vins izdara

Saskaita 16 float'us kopā.

Bet to man PixScene3 kodā nekur nevajag. Biju mēģinājis pārkārtot to ēnas testu kodu, bet rezultātā sanāca pat vairāk instrukcijas.

Quote:
nav taadi panjeemieni, kuriem nevajag prieksdarbus, ar kuriem var pateikt ir vai nav nepieciesami visi samplji...

Njā.. es nesen lasīju par ēnām un tikai sarežģītām metodēm tos IFus var viegli pielikt, bet tās metodes pašas par sevi ir diezgan lēnas..
Parasti var ēnu nerēķināt tikai tad, ja objekta apgaismojums (bez ēnām) = 0, bet es šaubos (varbūt jau nepamatoti, vienkārši dēļ nesekošanas videokaršu iespējām), ka IFi atmaksājas.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle


Last edited by snake5 on Sun Sep 13, 2009 8:00 pm; edited 1 time in total
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Sep 13, 2009 7:54 pm    Post subject:

Nesapratu, Storm. Tu par ko to saki?
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Sep 13, 2009 8:14 pm    Post subject:

Nu vieniigais normaalais ifs ir tas dot light. Bet savaadaakaa veidaa kaa tad tu pateiksi ka vajag vai nevajag visus sampljus, tur ir nepieciesami speciaali prepass etc
_________________
Izraadaas ka dazu dev.gamez.lv lietotaaju absurdaa ignorance meedz eksisteet arii augstaakas paakaapees : http://www.gamedev.net/community/forums/topic.asp?topic_id=411552
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> Pļāpātuve All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
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