Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

1

08.11.2005, 22:04

Großes Model einmal rendern oder Kleines mehrmals rendern?

Hi, mich würd mal interessieren, was sich von der Performance her mehr lohnt. Als Beispiel nehm ich mal nen Labyrinth, das aus gleich aussehenden Mauerstücken besteht.
Meine Frage: Ist es schneller dieses Labyrinth jetzt in einem großen Model zu speichern und zu rendern? Oder ist es schneller das Labyrinth als ein kleines Mauerstück, dass an unterschiedlichen Stellen von neuem gerendert wird zu speichern?

Das das kleine Mauerstück mehr flexibilität bietet soll hierbei mal nich beachtet werden, da man die Frage ja auch auf andere Bereiche beziehen kann, wo man keine Flexibilität braucht.

Schonma Danke im Vorraus...
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

2

08.11.2005, 22:11

Das kommt drauf an. Wenn dein Model nicht optimiert wird und sehr groß ist (also zum Beispiel ein Level, dass nicht in Portals oder einen Tree aufgeteilt ist) dann würde sich zerhacken auf jeden Fall lohnen! Bei der Tribase wird Quadtree allerdings schon unterstützt, falls du die benutzt. Andererseits ist dein Modell verhältnismäßig klein (Größe immer in Bezug darauf, wie viel davon durchschnittlich gleichzeitig in der Kamera zu sehn ist, ein sehr kleines wäre also immer ganz im Bild) und hat nur wenige Dreiecke, dann würde das Aufteilen in verschiedene Buffer entweder Speicher oder Rechenzeit oder beides kosten. Für ein Level würde ich dir immer ein optimiertes Model empfehlen. Da du ja im Moment an der Durchsichtigkeit deiner Wände werkelst kann es aber durchaus sein, dass das Aufteilen für dich mehr Vorteile bietet.. Man müsste allerdings auch n Algorithmus entwickeln können, der die Dreiecke aus einem einzigen Model testet, obwohl mir so auf Anhieb nur zeitintensive Lösungen einfallen würden..

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

3

09.11.2005, 16:20

über ne besondere optimierung hab ich mir bislang leider viel zu wenig gedanken gemacht, was mit ein grund is warum ich an meiner struktur ein bisschen feilen muss...
Und ja die TriBase benutz ich, aber die 2.Auflage, die hat schon Octrees.
Da mein Labyrinth im warsten sinne des wortes 3D is lohnt sich das warscheinlich schon eher... Immerhin bin ich momentan bei etwas um die 20FPS bei wirklich simplen Levels!!!!!!!!!
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

4

09.11.2005, 17:27

Klar, Du hast eine kleine "Batchsize", d.h. wenige Polys per Objekt.

Früher gab es im wesentlichen zwei Sachen die man klein halten musste:
- Zahl der Pixel"bearbeitungen". Also z.B. jede Wolke oder Rauchsäule am Himmel mit 100 Polys hintereinander mit Alphatexturen zu machen kostet fps.
- Zahl der Polys. Also z.B. nichtsichtbare möglichst früh ausfiltern, LoDs etc.

In DX9 (wahrscheinlich auch vorhergehende DX Versionen) ist auch die Zahl der Objekte entscheidend. BF2 z.B. benutzt gerade mal 200! Mit Objekt meine ich alles was in einem DrawIndexedPrimitive gemalt wird. Meine eigene Erfahrung ist, dass der dritte Flaschenhals (Objektzahl) wichtiger sein kann als die beiden ersten zusammen.

Zähl einfach mal mit, wie viele Draw* Befehle Du pro Frame absendest.

Es ist klar, dass es auch einen Nachteil hat, de ganzen Level in ein einzelnes Objekt zu packen, nämlich werden dann grosse Teile ausserhalb des Frustums gerendert. Wie immer muss man optimierte Algorithmen anwenden und muss einen Kompromiss finden.
"Games are algorithmic entertainment."

Anonymous

unregistriert

5

09.11.2005, 18:23

Zitat von »"Lemming"«


Und ja die TriBase benutz ich, aber die 2.Auflage, die hat schon Octrees.


Ich habe noch die erste Auflage vom Buch. Kann man den Quellcode von der 2. Auflage wo runterladen oder muss ich mir jetzt auch die 2. Auflage kaufen?

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

6

09.11.2005, 19:08

Ich glaube den neuen Quellcode bekommt man echt nur mit der 2. Auflage zusammen.. Blöd für uns :(

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

09.11.2005, 19:41

Wieso? Selbst ist der Mann :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

8

09.11.2005, 19:58

Ach man muss nich alles selber machen^^
Nebenbei: Octree muss nicht unbedingt besser sein, da die Rechenzeit größer ist je mehr Zweige man hat. Das kommt halt drauf an, wie klein die untersten Modellteile sind und was genau man machen will. Sonst wäre ja ein 64-Zweige Baum noch besser...

edit: Ein klassischer BSP-Tree hat zB nur zwei Zweige.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

12.11.2005, 12:14

für ein labyrinth würde sich vermutlich ein quadtree oder bsp anbieten...

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

10

12.11.2005, 15:19

Zitat von »"dot"«

für ein labyrinth würde sich vermutlich ein quadtree oder bsp anbieten...
Eigentlich ja, nur mein Labyrinth is 3D also nich nur von der Darstellung, sondern auch von den Wegen her...
Man muss sich nur zwischen Rechts, Links, Vorne und Hinten entscheiden, sondern Oben und Unten gibts auch. Da lohnt sich der Octree dann wahrscheinlich doch eher...

Gruß Lemming
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Werbeanzeige