Tekstuurien viemä aika (engine)

Keskustelua Blender game enginen käyttämisestä
Post Reply
Könni
Posts: 66
Joined: 06.01.2009, 11:13

Tekstuurien viemä aika (engine)

Post by Könni »

Kun tekee enginessä käytettäväksi ison tekstuurin ( = tekstuuria käyttävien polygonien yhteispinta-ala on suuri) niin mitä asioita pitää huomioida jotta se voidaan rendata mahdollisimman nopeasti? Ensisijaisena tavoitteena siis paljon frameja tarvittaessa ulkonäön ym. kustannuksella. Esimerkkinä voisi olla taivas, potkupallokenttä tms.

Onko pieni polygonien määrä aina parempi kuin suuri (yksittäiselle tekstuurille)? Kannattaako suuri tekstuuri jakaa pienemmiksi osiksi omille polygoneille vaikka siihen ei muuten olisi tarvetta?

Kuinka paljon tekstuurikuvatiedoston koko/resoluutio ja värisyvyys vaikuttaa? Onko ne ainoat seikat mitkä vaikuttaa rendausaikaan ja onko näistä toinen merkittävästi tärkeämpi?

Onko nopeuden kannalta edullista käyttää paljon samoja tekstuureita eri malleissa/objekteissa vai vaikuttaako tämä vain tarvittavaan muistin määrään?

Mun kokemukset ogl-ohjelmoinnista on niin vähäiset että nyrkki- eli näppituntumaa ei oikein löydy. En viittisi alkaa kokeilemalla selvittämään näitä. Oon huomannut että tekstuurien piirtäminen vie suurimman osa frameajasta, ainakin niissä muutamassa blender-testissä joita olen tutkinut. Olenko suunnilleen oikeassa? Saattaa tosin olla että jossain koneeni 3d-asetuksissa, ajureissa tai muissa mystisissä haittaohjelmissa on väärät säädöt.
ArM
Posts: 85
Joined: 08.02.2009, 14:54

Re: Tekstuurien viemä aika (engine)

Post by ArM »

Joskus olin mukana sellasessa pelitiimissä 2d-graafikkona, jossa mun piti tehdä noita tekstuureja ja tilejä. Koodaajat sano mulle, että tekstuurin pitää olla joko 512 tai 256 tai 128 px kokosia neliöitä. Tilet oli 32px kokosia. Kuulemma tietokoneelle on helpompi tehdä pelimoottoria, joka laskee ne tekstuurit sitten nopeemmin, kun ne noudattaa tollasta kaavaa. En tiedä sitten blenderistä, enkä muutenkaan mistään, mut toteutin niiden pyyntöjä sitten :P Varmaan tekstuurit voi olla sitten 1024 kokosiakin...

Kantsii tutkia jostakin pelistä niitä tekstuureita.
User avatar
ramppis
Posts: 113
Joined: 07.12.2007, 00:12

Re: Tekstuurien viemä aika (engine)

Post by ramppis »

Tämä on asia joka on itseänikin askarruttanut paljon. Omassa miljöömallinnuksessani olen käyttänyt 256x256, 512x512 ja 1024x1024 kokoisia tekstuuri"arkkeja" riippuen vähän teksturoidun alueen suuruudesta.

En tiedä onko tuo systeemini sitten oikein tai väärin mutta hyvin on reaaliaikatila pyörinyt jopa vanhalla 32 megan näyttiksellä, saati sitten nykyisellä 512 megaisella.

Koko scenessä on tällä hetkellä polyja hieman yli 12000, joka mielestäni ei ole kovin paljoa vaikka kyseessä on noin 50 rakennusta plus muuta tilpehööriä.
Könni
Posts: 66
Joined: 06.01.2009, 11:13

Re: Tekstuurien viemä aika (engine)

Post by Könni »

Juu tietääkseni opengl:n tekstuuriksi käy vain koot jotka on 2-kantasia. Maksimitekstuurin koollekkin on kai jotain rajoituksia, mutta ennemmin tulee ehkä näytönohjaukseen käytettävissä olevan muistin (en muista termiä) määrä tai suuren tekstuurin lataaisen viemä aika vastaan. Luulen että nämä ei ole kauhean oleellisia juttuja. Jos teksturoi tiiliseinän niin luulisi että kannattaa piirtää tekstuuriin vain muutama tiili ja täyttää pienellä kuvalla koko seinä. Jos teksturoi taivasta niin samal lail voisi ajatella että tausta on vaikka sininen tai musta, siis ei tekstuuria, ja sen päälle (tai siis alle) laittaisi pilvi-, kuu-, ym. tekstuuria varten polygonin. Saattaisi näyttää rumalta mutta hainkin nopeutta tarvittaessa ulkonäön kustannuksella. Mietin vaan että onko nykytiatskari niin nopea että tällä on turha vaivata itseään.

Minua askarruttaisi että kun suunnittelen kynällä ja paperilla (peli- tms) ympäristöä niin kuinka paljon sisältöä sinne voi ajatella laittavansa. Esim justiin miljöömallinnuksessa kuinka monta taloa voi pitäjässä olla tai montako puuta metsässä jne. Erityisesti maapohjan teksturoitujen faceitten määrä / resoluutio mietityttää. Luulenpa että ratkaisevaa on montako objektia frustumissa voi enintään olla kerralla. Ja montaako tekstuuria niissä käytetään. Ja tietysti montako teksturoitua polygonia näkyy kerralla. Skenen/ympäristön muulla sisällöllä ei olisi niinkään paljon merkitystä rendausajan suhteen, vai mitä luulette.

Ittekkin ajattelin että tutkisin muitten pelejä ja ympäristöjä, mutta en voi olla varma että niitten tekijätkään on ollut perillä tai huomioinut näitä juttuja. Lisäksi blender-pelit on yleensä ollut tasohyppelyitä tms jotka ei itseäni juuri kiinnosta. Tarkotan että niissä nämä asiat ei välttämättä ole oleellisia, jos koko skenessä on vain vähän objekteja. (?)
ArM
Posts: 85
Joined: 08.02.2009, 14:54

Re: Tekstuurien viemä aika (engine)

Post by ArM »

Sä voit laittaa esineitä sinne jonkun tietyn verteximäärän mukaan, joka on pelimoottoririippuvainen. En tiedä kuinka paljon blenderin moottori jaksaa pyörittää. Esim. 100 000 yhdessä kentässä. Sitten tekstuurit on toinen juttu. Nää kaikki ladataan näytönohjaimen muistiin, jota nykysissä näytönohjaimissä yleensä on jo gigan verran jota sitten se näytönohjain pyörittelee.
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Tekstuurien viemä aika (engine)

Post by tuxer »

Tein pienen kokeen. Tein 1700 erillistä kuutiota jolloin engine FPS oli 150. Kun laitoin kaikki yhdeksi meshiksi (Ctrr + J), niin FPS pomppasi 870:een.

Eli ensimmäisessä tapauksessa engine tekee 1700 transformaatiota joka kerta ja jälkimmäisessä yhden. Polygonimäärä on siis sama mutta suorituskyky on eri.

OpenGl:n ja pelimoottorin suorityskyky onkin aika kinkkinen ongelma jossa on aika paljon muuttujia :)
Könni
Posts: 66
Joined: 06.01.2009, 11:13

Re: Tekstuurien viemä aika (engine)

Post by Könni »

Erittäin mielen kiintoista. Mietinkin että mikä sulla kesti vastata mutta kyllähän noita 1700 laatikkoa jonkun aikaa naputtelee :) Mitä tarkalleen ottaen tarkoitat "engine fps oli 150" ? Laskeeko blenderi maksimi fps:n?
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Tekstuurien viemä aika (engine)

Post by tuxer »

Könni wrote:Erittäin mielen kiintoista. Mietinkin että mikä sulla kesti vastata mutta kyllähän noita 1700 laatikkoa jonkun aikaa naputtelee :) Mitä tarkalleen ottaen tarkoitat "engine fps oli 150" ? Laskeeko blenderi maksimi fps:n?
Kun laittaa asetuksista Display all frames -kohdan päälle niin pelimoottori renderoi niin nopeasti kun pystyy. Muutenhan se synkronoi sen näytönpäivitystaajuuteen.
Post Reply