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

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

21

28.09.2006, 18:36

Zitat von »"Wümpftlbrümpftl"«


@ Osram
Ähh was? Bei sagen wir mal 5000 Objekten die irgendwo verstreut sind dürft das sehr wohl was ausmachen.


Woher weisst Du das, hast Du das ausprobiert? Das scheint sich als "selbstverständlich" anzuhören, aber so sebstverständlich ist es nicht.

Ich habe keine Ahnung wie viele (f)Ops ein Frstumtest benötigt, aber denke "50" ist konservativ. Sagen wir Du hast 30 Hz, dann kostet das Testen

5000 * 50 * 30 (f)Ops = 7.5 M (f)Ops /Sekunde.

Ich habe wiederum keine Ahnung wie viele (f)Ops man pro takt hinbekommt in einem modernene prozessor, aber vor 15 Jahren habe ich >= 2 erreicht, da sollte man heuite doch wenigsten einen bekommen, also kommen wir zu

7.5 M Takte/Sekunde

Könnte also vernachlässigbar sein, wenn meine Vermutungen stimmen und wenn die Speicherzugriffe kein problem sind.
"Games are algorithmic entertainment."

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

22

28.09.2006, 18:42

Zitat von »"malignate88"«

@Osram:
Du verwechselt zwei Dinge:
1. Die Objekte auf der Karte, die auch bei Battlefield weit mehr als 5000 Objekte sein können.
2. Die Objekte im sichtbaren Bereich und da sind je nach Kameraeinstellung 200 Objekte schon sehr viel.


Sicher ist da ein Unterschied, aber zumindest bei der Demo Karte (keine Ahnung wie andere aussehen) ist es mit Sicherheit kein Faktor 25.

Wenn Du die Objekte an Tiles "hängst" kannst Du weit entfernte sehr einfach ber das Tile ausschliessen. Also nahegelegene werden mit Objketen gemalt, mittel weit entfernte ohne und ganz weit entfernte gar nicht.

Und die Aussage meines Posts war ja dass das was Du als ein Objekt siehst - insbesondere bei Landcschaftsobjekten wie Bäumen oder Häusers - nicht für DirectX ein Objekt sein muss.

Um bei Landschaft zu bleiben, Microsoft selber im FSX verschmilzt nicht nur Landschaftsobjekte zun einem, sondern sogar entfernt liegenden Kacheln, maW die Landschaft selber.
"Games are algorithmic entertainment."

23

28.09.2006, 18:47

@Osram: Sicher sollte man auch da optimieren.

Um euch mal ein bisschen was zu demonstrieren, hier zwei sehr, sehr frühe Screenshots aus einem Projekt.

Ohne Quadtree:
www.nordlicht-dev.de/Tigerarmee.JPG
Mit Quadtree:
www.nordlicht-dev.de/TigerarmeeQuadtree.JPG

Phili

unregistriert

24

28.09.2006, 18:50

@malignate88
? Was willst du mit den Screenshots sagen? auf dem 2. sind viel weniger Tiger, also wird es auch viel schneller gezeichnet. :?

25

28.09.2006, 18:54

Ups, da habe ich gar nicht aufgepasst, als ich die Screenshots rausgesucht habe. Naja, an den Tigern liegts jedenfalls nicht. Meine Meinung wisst ihr, wie ihr es umsetzt ist eure Sache. Bedenkt aber auch, dass man einen Quadtree auch für Kollisionstests verwenden kann.

Angenommen ich habe 4000 Objekte gleichmäßig verteilt, dann kann ich mit 3 Tests schon 3000 Objekte cullen. Ein Performanceverbesserung um den Faktor 1000 will ich mir nicht nehmen lassen. Viel Spaß mit euren Erfahrungen.

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

26

28.09.2006, 18:59

@ Osram
Soll das jetzt heißen das man für jeden Quadtreeleaf einfahc nur ein Model hat?
Naja dann müsste man halt die Landschaft in einen Stück modellieren und dann zerschneiden. Außerdem kommt man um massig Texturswitches wohl auch nich herum. Zumal man dann zb einen Baum nicht mehrmals verwenden kann und so mehr Speicher braucht.

@ Phili
Du meinst nicht wirklich, dass ich von einer großen weiten Welt alle Modelle nur mit den BBs gegens Frustum testen soll? Was macht dann deiner Meinung nach wirklich was aus?

Und ja es war so zu verstehen, das ich vieleicht in einer Welt paar viele Tausend Häuser, Pflanzen und was weiß ich alles rumstehn und ich halt nur die Rendern will die man nunmal sieht.

-> Ich mach jetzt einfach einen statischen Quadtree, in dessen Nodes sich je nach den Boundingboxes einzelner Modele eben diese befinden (so sind dann manchmal welche öfter im Quadtree verzeichnet). Dann ganz einfaches rendern mit dem Quadtree wobei beim ankommen an einen Leaf an jedes enthaltene Model noch überprüft wird ob dieses nicht schon gerendert wurde.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

27

28.09.2006, 19:21

Weil du bei mir nicht ganz mit kommst ich meine es ungefähr so wie Phili es sagt.
Aber ich verstehe auch nicht ganz was du meinst hast du nun die Objekte alle einzeln, die du dann lädtst oder wie meinst du das?

Phili

unregistriert

28

28.09.2006, 19:25

@Wümpftlbrümpftl
Meiner meinung macht z.B. richrig was aus, b du(wenn du sie benutzt) deine Shader richtig optimierst, ob du keine unnötigen Polygonne in die modelle steckst, dass du keine 2048*2048 Texturen verwendest, dass du bei objekten nur die Lichter mittberechnest, die wirklich was ausmachen..

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

29

28.09.2006, 19:37

Zitat von »"malignate88"«

Bedenkt aber auch, dass man einen Quadtree auch für Kollisionstests verwenden kann.


Ja, das ist ein Argument.

Zitat


Angenommen ich habe 4000 Objekte gleichmäßig verteilt, dann kann ich mit 3 Tests schon 3000 Objekte cullen. Ein Performanceverbesserung um den Faktor 1000 will ich mir nicht nehmen lassen.


Faktor 1000? Wieso?
"Games are algorithmic entertainment."

30

28.09.2006, 19:43

So, habe nochmal einen neuen Screenshot gemacht, die Tigeranzahl dürfte nagezu gleich sein:

Ohne Quadtree (30FPS):
http://www.nordlicht-dev.de/Tigerarmee.JPG

Mit Quadtree (150FPS):
http://www.nordlicht-dev.de/TigerarmeeQuadtree.JPG

Wenn das kein Unterschied ist...

Werbeanzeige