Gamestudio Links
Zorro Links
Newest Posts
Trading Journey
by howardR. 04/28/24 09:55
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Help with plotting multiple ZigZag
by M_D. 04/26/24 20:03
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
M1 Oversampling
by jcl. 04/26/24 11:12
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
Eigenwerbung
by jcl. 04/26/24 11:08
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (1 invisible), 735 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
wandaluciaia, Mega_Rod, EternallyCurious, howardR, 11honza11
19049 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 8 1 2 3 4 5 6 7 8
Framerate #383774
09/25/11 10:16
09/25/11 10:16
Joined: Sep 2011
Posts: 5
M
Microtex Offline OP
Newbie
Microtex  Offline OP
Newbie
M

Joined: Sep 2011
Posts: 5
Hallo,

mir ist aufgefallen das immer wenn die Engine über 2000 Modells anzeigen soll die Framerate abstürzt. Die Modells haben 12 Polygone, welche Möglichkeiten gibt es das zu optimieren?

MFG

Re: Framerate [Re: Microtex] #383794
09/25/11 13:50
09/25/11 13:50
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Harry Potter Offline
Expert
Harry Potter  Offline
Expert

Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Die Anzahl der Polygone ist gar nicht soooo entscheidend für die Framerate. Eine viel größere Auswirkung hat die Größe(Auflösung) der verwendeten Textur. Mipmaps können da die Framerate deutlich erhöhen.

Edit: Zum besseren Verständnis:
Nehmen wir an, Du hast ein würfelförmiges Model, auf dessen 6 Seiten sich eine Textur befindet, die 4096x4096 Pixel groß ist. Die Engine (oder besser gesagt DirextX bzw. die Grafikkarte) muss dann also 4096 mal 4096 Pixel zeichnen, das ergibt über 16 Millionen Pixel, und das mal 6, da der Würfel ja 6 Seiten hat. Und das ganze dann noch multipliziert mit der Anzahl der Models, die auf dem Bildschirm zu sehen sind.

Wenn Du Mipmaps verwendest, dann werden Models, die weiter entfernt sind, nicht mit der maximalen Texturauflösung gerendert, sondern mit der kleineren Mipmap. Je nach Entfernung mit einer Auflösung von jeweils einem Viertel der Pixel. Also 2048x2048, bei noch größerer Entfernung dann 1024x1024, 512x512, usw. usf.! Mipmaps haben außerdem den Vorteil, dass die Textur von weit entfernten Objekten nicht flimmert (da die kleineren Mipmaps ja immer unschärfer werden).

Last edited by Harry Potter; 09/25/11 14:02.
Re: Framerate [Re: Harry Potter] #383811
09/25/11 18:56
09/25/11 18:56
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Die Anzahl der Entities spielt aber eine große Rolle.

Wenn Du Dein Projekt etwas genauer schilderst, kann man eher Vorschläge machen wie und wo es sich optimieren lässt.

So, ohne Dein Projekt zu kennen, würde ich vorschlagen, die Modelle, die weiter entfernt sind, zu wenigeren Modellen zusammenzufassen.

Re: Framerate [Re: Microtex] #383820
09/25/11 20:29
09/25/11 20:29
Joined: Sep 2011
Posts: 5
M
Microtex Offline OP
Newbie
Microtex  Offline OP
Newbie
M

Joined: Sep 2011
Posts: 5
ich bin noch Gamestudio Neuling und man sieht es ganz gut wenn man im Physics Sample mehr Würfel und Kugeln erzeugen lässt die ja nichtmal einen Skin haben.

Re: Framerate [Re: Microtex] #383824
09/25/11 22:51
09/25/11 22:51
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Da hast Du doch die Lösung.
Wenn jeder dieser Würfel physikalische Eigenschaften zugewiesen bekommt, stößt das wahrscheinlich den Rechner schlicht an seine Grenzen.
Drück mal die Taste F11, da werden die einzelnen Kompenenten aufgelistet und angezeigt, für was die Engine jeweils wieviel Rechenzeit benötigt.

Re: Framerate [Re: Harry Potter] #383900
09/26/11 23:56
09/26/11 23:56
Joined: May 2005
Posts: 2,713
Lübeck
Slin Offline
Expert
Slin  Offline
Expert

Joined: May 2005
Posts: 2,713
Lübeck
Originally Posted By: Harry Potter

Nehmen wir an, Du hast ein würfelförmiges Model, auf dessen 6 Seiten sich eine Textur befindet, die 4096x4096 Pixel groß ist. Die Engine (oder besser gesagt DirextX bzw. die Grafikkarte) muss dann also 4096 mal 4096 Pixel zeichnen, das ergibt über 16 Millionen Pixel, und das mal 6, da der Würfel ja 6 Seiten hat. Und das ganze dann noch multipliziert mit der Anzahl der Models, die auf dem Bildschirm zu sehen sind.

Öhm, nee...
Es müssen nur die Pixel gezeichnet werden die auch von dem gerenderten Objekt im Rendertarget eingenommen werden plus noch Overdraw bei manchen sich eigentlich verdeckenden Polygonen, den es im Fall des Würfels dank Backface Culling aber nicht gibt. Für die nun tatsächlich zu zeichnenden Pixel kennt die Grafikkarte die entsprechende Position auf der Textur (die ja beim Modellieren in der UV Map landen sollte). Hier kann nun die entsprechende Farbe aus der Textur herausgelesen werden. Je nach Einstellung wird dabei immer die Farbe des entsprechenden Pixels genommen, oder zwischen den Pixeln interpoliert. Wenn nun Mipmaps genutzt werden, dann ermöglicht es der Grafikkarte einfach nur die Texturdaten effizienter in den Speicher zu packen, was wiederum das samplen (das "auslesen der Pixelfarbe") beschleunigt.

Das Problem in diesem Fall ist dagegen wie Achim schon geschrieben hat, die hohe Anzahl an Objekten plus vermutlich noch die Physik. Von daher ist davon auszugehen, dass einfach nur die CPU nicht schnell genug ist um mehr Objekte zu handlen. Hier müsste man jetzt profilen um herauszubekommen ob das Problem die Drawcalls oder etwas anderes sind und davonabhängig könnte man dann optimieren, wenn man denn den Engine Sourcecode hätte... Bzw je nach ergebniss dann auch ein einzelnes großes Mesh aus den einzelnen Objekten generieren, was dynamisch aber eher zu langsam ist.

Von daher ist die Lösung hier wohl einfach akzeptieren und sich mit den Grenzen zu arrangieren laugh.

Re: Framerate [Re: Slin] #383916
09/27/11 08:51
09/27/11 08:51
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline
Senior Expert
HeelX  Offline
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Ich möchte noch hinzufügen, dass es generell nützlich ist, keine großen Texturen zu verwenden, wenn möglich... unkomprimierte 4096x4096 RGBA Texturen sind ja schon alleine 64MB groß und dann muss man das jeden frame den Flaschenhals hinunterstopfen... ist doch klar, dass da die framerate flöten geht.

Eine gute Faustregel ist es, mal zu gucken, wie groß ein Objekt in der Standardauflösung (nicht die Höchste!) auf dem Bildschirm überhaupt werden kann und dann davon abzuleiten, wie groß man die Textur wählt. Dann als DDS verpacken, das macht sie kleiner im Speicher und ist schneller zu laden. Wenn man weiß, dass eine Textur nicht weniger als so-und-so-viele Pixel einnimmt, dann kann man sich sogar Mipmaps sparen im DDS-Generierungsprozess.

[EDIT] Beispiel: wenn meine Standardauflösung 1280x1024 ist und ich feststelle, das ein Character z.B. nie mehr als 1/8 des Bildschirms einnimmt, dann sind das in etwa (1280x1024)/8 = 163840, mal 2 weil ich den ja von vorne und hinten sehen kann, macht dann 327680 Pixel, geteilit durch ne 2er Potenz macht dass dann in etwa 512x640 Pixel, da kann man sich dann aussuchen ob man 512x512 oder 512x1024 nimmt, je nachdem ob man es schafft, gleiche Texturteile mehrfach zu verwenden oder nicht.

Last edited by HeelX; 09/27/11 09:00.
Re: Framerate [Re: HeelX] #383919
09/27/11 09:42
09/27/11 09:42
Joined: May 2005
Posts: 2,713
Lübeck
Slin Offline
Expert
Slin  Offline
Expert

Joined: May 2005
Posts: 2,713
Lübeck
Guter Test für das von Christian beschriebene, ist einfach mal eine einfarbige 4096x4096 Textur mit Mipmaps in jeweils einer anderen Farbe zu nehmen und diese über alles zu legen. Davon abhängig wo man dann welche Farbe sieht kann man dann die Texturauflösungen wählen.

Re: Framerate [Re: Slin] #383923
09/27/11 09:57
09/27/11 09:57
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline
Senior Expert
HeelX  Offline
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Ja, stimmt, wobei du dich dabei dann aber auf quadratische Texturen festlegst, ich würde auch 1:2 Texturen testen smile

Man kann Texturen mit unterschiedlich gefärbten Mipmaps gut mit den NVidia DDS Tools herstellen, da die des gestatten mehrere DDS Dateien als Mipmaps zu einer Textur zusammenzufügen.

Re: Framerate [Re: HeelX] #384150
09/29/11 20:06
09/29/11 20:06
Joined: Aug 2011
Posts: 9
T
TazTheDevil Offline
Newbie
TazTheDevil  Offline
Newbie
T

Joined: Aug 2011
Posts: 9
Hi

also bei dem problem mit den frames hilft dir vielleicht ein Voxel model
habe mal gelesen das diese insovern sie nicht all zu komplex sind wesendlich weniger belastung für den rechner darstellen aber dafür ein wenig mehr arbeitsspecher brauchen.

mfg

Page 1 of 8 1 2 3 4 5 6 7 8

Moderated by  HeelX, Spirit 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1