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

opengla optimizators vajadziigs
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> OpenGL
View previous topic :: View next topic  
Author Message
Vecais_Dumais_Laacis
Guru
Guru


Joined: 29 Jan 2004
Posts: 800

PostPosted: Fri Aug 10, 2007 4:34 pm    Post subject: opengla optimizators vajadziigs

vajadzeetu kaadu cilveeku kursh ogl paarzin un grib mazliet briivo laiku pateereet - ogl iipashi pats nemaaku.

situaacija ~ taada.
projekts stepmania.
renderee izmantojot d3d un ogl.
d3d modee nekaadu probleemu
ogl modee 3d modelji bremzee.
stepmania paarsvaraa izmanto quadus. shajaa gadiijumaa bremze iestaajaas tikliidz tiek rendereeti 3d objekti.

pie paaris 3d objektiem fps nokriitaas 2x. patesteejos ar gDEBugeri. atsleedzot rendereeshanu fps ir normaals. gpu noslodze arii nekaada.

ja izmanto normaalu ogl renderingu (glDrawElements) viss straadaa normaali. fps ~300 (bez modeljiem ~320)

enableejot vertex bufferus (un lietojot glDrawRangeElements) iestaajaas bremze. fps ~55

moka kaadam ir idejas kuraa virzienaa rakt.

testa video karte Radeon X800


edit:

normal mode draw funkcija
http://stepmania.cvs.sourceforge.net/stepmania/stepmania/src/RageDisplay_OGL.cpp?view=markup&sortby=date#l_953

vertex buffers
http://stepmania.cvs.sourceforge.net/stepmania/stepmania/src/RageDisplay_OGL.cpp?view=markup&sortby=date#l_1236

profaileris (ne opengl profaileris) raada ka saape ir tieshi tajaa glDrawRangeElements
_________________
...un ja bites buutu laachi...
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: Fri Aug 10, 2007 5:29 pm    Post subject:

Vajadzētu pamēģināt likt tos datus (virsotnes, normāles, texcoord) katru savā buferī, bet gan likt pakotā buferī, tb masīvā no struct { float vertex[3]; float normal[3]; float uv[2]; }. Daudz labāka struktūra cache izmantošanas ziņā.

Vēl var tam pašam VBO lietot parastu glDrawElements, bez nekāda Range norādīšanas, varbūt tur ir vaina.. Cik esmu dzirdējis par to Range funkciju - cilvēki sakot, ka vajag būt pārliecinātam, ka norādītie indeksi neizies ārpus robežas, ko supportē videokarte (manam X1600 tas ir 65535). Ja izies, tad būs bremze. Vai tas tiek ievērots?
Back to top
View user's profile Send e-mail
Vecais_Dumais_Laacis
Guru
Guru


Joined: 29 Jan 2004
Posts: 800

PostPosted: Fri Aug 10, 2007 5:43 pm    Post subject:

tie objekti ko renderee ir vienkaarshi - zem 100 triangljiem/vertexiem
_________________
...un ja bites buutu laachi...
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: Fri Aug 10, 2007 6:24 pm    Post subject:

Nu tādam mazam apjomam var gadīties, ka VBO ir pārāk liels overheads, kaut arī īsti neticās. Tad jau labāk lietot prastus Vertex Array, vai arī listus (glList), kuri draivera iekšienē pēc draivera uzskatiem tāpat var tikt pārtaisīti par VBO.
Kā ir lielākiem apjomiem - vai tad VBO kautko iegūst performances ziņā pār immediate modi?
Back to top
View user's profile Send e-mail
Vecais_Dumais_Laacis
Guru
Guru


Joined: 29 Jan 2004
Posts: 800

PostPosted: Sat Aug 11, 2007 7:23 am    Post subject:

gjeniaali jociiga kljuuda

visa vaina shaderii
Quote:
attribute vec4 TextureMatrixScale;

void main(void)
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
vec4 multiplied_tex_coord = gl_TextureMatrix[0] * gl_MultiTexCoord0;
gl_TexCoord[0] = (multiplied_tex_coord * TextureMatrixScale) +
(gl_MultiTexCoord0 * (vec4(1)-TextureMatrixScale));
gl_FrontColor = gl_Color;
}


tikliidz nonjem lieko iekavu taa 80fps vietaa uzrodaas 510fps.
_________________
...un ja bites buutu laachi...
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: Sat Aug 11, 2007 10:42 am    Post subject:

Mja.. ATI ar saviem draiveriem... Varu derēt, ka tas pats kods uz NVIDIA videokartes/draiveriem ies bez problēmām. Mani šādi gļuki jau vairākas reizes ir izbesījuši. Bieži vien ir sanācis vienkārši, ka draiveris krašo uz šeidera kompilēšanu (un tika ar ATI). Un neko tur nepadarīt. Vēl arī esmu konstatējis, ka ar ATI nestrādā kompresētās tekstūras (DXTn), kuras grib uploadēd caur PBO (Pixel Buffer Object). Arī notiek krašs un neko tur nepadarīt..

Tajā šeiderī iesaku lietot vec4(1.0). Citreiz draiverim nepatīk, ka integer tipi tiek pielietoti float operācijās. GLSL valodā kā nekā tipi netiek impliciti pārvērsti, tur visa pārvēršana pašam jānrāda.
Back to top
View user's profile Send e-mail
Vecais_Dumais_Laacis
Guru
Guru


Joined: 29 Jan 2004
Posts: 800

PostPosted: Sat Aug 11, 2007 7:54 pm    Post subject:

tomeer paliek atklaata probleema
tas ko es 'salaboju' vienkaarshi failoja shaderi un notika software fallbacks


bez taa

Code:
   gl_TexCoord[0] = (multiplied_tex_coord * TextureMatrixScale) +
         (gl_MultiTexCoord0 * (vec4(1.0)-TextureMatrixScale));


viss iet labi
_________________
...un ja bites buutu laachi...
Back to top
View user's profile
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Aug 11, 2007 8:29 pm    Post subject:

Mans laucins ir HLSL un es par GLSL neko nezinu, bet vai in da vec4() nevajadzeetu tikt nodefineetaam 4 veetrtiibaam? eg vec4(1.0,1.0,1.0,1.0)?
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: Sat Aug 11, 2007 9:57 pm    Post subject:

vec4 tipam ir "konstruktors" no floata, un vec4(x) nozīmē to pašu, ko vec4(x,x,x,x). Tāpat vec4 ir arī šādi te "konstruktori":
vec4(vec2, vec3), vec4(vec3, float), vec4(float, vec3), utt - šajos gadījumos vec4 tipam tiks piešķirtas vērtības pa elemntiem pēc kārtas - vispirms x, pēc tam y, tad z, un beigās w. Piemēram: vec4(vec3(a,b,c),d) == vec4(a,b,c,d) = vec4(vec2(a,b), c, d).
Tas pats notiek arī ar citiem vektoru un matricu tipiem. Piemēram, 4x4 matricai konstruktorā vari padot 4 vec4 tipus vai arī 8 vec2 tipus.

HLSL'am ir tieši tas pats - float4. Ja tam piešķirsi vienu floatu, tas to "izpletīs" pa visām četrām komonentēm.

vdl: es īsti nesapratu - tad problēma vēl ir vai vairs nav? glsl software fallbacku btw var noteikt izvadot info loga atskaiti pēc šeidera nolinkošanas. Ja tajā stringā ir vārds "software", tad noticis tas fallbacks.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sat Aug 11, 2007 11:26 pm    Post subject:

bubu wrote:

HLSL'am ir tieši tas pats - float4. Ja tam piešķirsi vienu floatu, tas to "izpletīs" pa visām četrām komonentēm


Es teicu ka zinu par HLSL nu vismaz to ka taa drikst Smile .

P.S Varbut vajag salidzinat glsl kodu ar hlsl respektiivo, maybe tur ir nepareiza implementacija tam glsl. t.i. ieposto hlsl kodu?
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: Sun Aug 12, 2007 12:35 am    Post subject:

Ko nozīmē nepareiza implementācija tam glsl?
Tāda kādu vajadzēja, tāda droši vien arī ir.
Back to top
View user's profile Send e-mail
Vecais_Dumais_Laacis
Guru
Guru


Joined: 29 Jan 2004
Posts: 800

PostPosted: Sun Aug 12, 2007 10:17 am    Post subject:

probleema joprojaam pastaav.
vienk tas ko es 'salaboju' lika shaderim failoties un softs attieciigi redzot ka shaderis nava izmanto fixed funkcijas lai panaaktu attieciigo efektu.

hvz kas tajaa shaderii taads leens ir
_________________
...un ja bites buutu laachi...
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: Mon Aug 13, 2007 10:30 am    Post subject:

Tad šeideris ir lēns vai VBO ir lēns? Nesaprotu vairs. Šeideris + VA (Vertex Array) arī ir lēns, vai nē?
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 Aug 21, 2007 4:35 pm    Post subject:

zini, kaa var meeginaat dariit? njemt tajaa funkcijaa katru aizdomiigo darbiibu un meeginaat aizstaat ar jau gatavu rezultaatu - tas vareetu paraadiit, kura darbiiba leena...
man nojauta liek domaat par TextureMatrixScale...
tas ir pilnais kods?
kam tas sheideris domaats?
_________________
"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 Aug 21, 2007 5:55 pm    Post subject:

Kā tu iedomājies aizstāt glDrawElements ar "gatavu rezultātu"?
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> OpenGL 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