Performance-Frage

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

ChristianK

Betreff: Performance-Frage

BeitragDi, Apr 03, 2007 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab eine Map, die aus einem relativ großen Mesh besteht. Jetzt würde ich gerne wissen, ob Blitz3D alle Dreiecke des Meshes rendert oder nur die, die im sichtbaren Bereich liegen. Könnt ihr mir da weiterhelfen?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Apr 03, 2007 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn nur ein Vertex eines Meshes innerhalb des Sichbereiches der Kamera liegt, wird das ganze Mesh 'gerendert'. Bei einigen Grafikkarten, wird dabei aber zuvor eine Überprüfung gemacht und eventuelle Triangles des jeweiligen Frame deaktiviert. Kommt also auch auf die Grafikkarte an.

- GeForce hat es meines Wissens nicht (vielleicht aber die neueren Modelle)
- Meine schon 3 Jahre alte ATI hat so eine Funktion, die zudem auch verdeckte Triangles (Raster) abschaltet und nicht mitrendert.

- Was die Anzahl von Triangles angeht, ist meist eine ATI vom Vorteil.
- Was die Texturierung angeht, ist meist eine GeForce im Vorteil.

Du kannst dich also nie darauf verlassen, wie schnell ein Programm sein wird. Daher empfehle ich dir ALLE möglichkeiten auszunutzen, wo man Performence raus holen kann. Lese dir mal dazu folgenden Threat durch, wie ich Probleme mit eines meiner Codes im Codearchiv hatte und wie enorm die Unterschiede unter Grafikkarten sein können. https://www.blitzforum.de/foru...hp?t=21867 Besonders interessant: Bei einigen Leuten war der Code so langsam, obwohl sie ein mehr als 200 % leistungsfähigeres System hatten als meines es ist.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Dreamora

BeitragDi, Apr 03, 2007 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist nicht das das Mesh gerendert wird. Die meisten Karten der letzten Jahre sind schlau genug nicht sichbares auch nicht zu rendern.

Problem ist jedoch das "ist im Sichtbereich" -> "wird zur Grafikkarte gesandt" heisst. Und das ist das was eigentlich das wirkliche Problem darstellt speziell auf low end Karten, onboard und ähnlichen Karten die keine Bandbreite haben.

Am sinnvollsten ist es eigentlich die Welt in Bereiche (untermeshes) zu unterteilen, welche +- 1.5 Mal die Länge deiner Kamerasichtweite haben.

Es gibt dazu im englischen Code Archiv von Rottbott (glaub war von ihm) ein Chunk Mesh Codeschnippsel der ein statisches Mesh selbst zersäbelt auf basis deiner Eingaben. Würde den als Grundlage nutzen und entsprechend deiner Bedürfnisse erweitern wo nötig
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragMi, Apr 04, 2007 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Hilfe. Wenn ich das Mesh unterteile, sollte die Performance ok sein. Very Happy
Und da hab ich gleich noch ne Frage: Werden alle Meshes 2mal gerendert, wenn ich einen Mirror erstelle, oder wird das irgendwie anders gemacht?
 

Dreamora

BeitragMi, Apr 04, 2007 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Mirror spiegelt effektiv die geometrische Welt.
Wenn du das umgehen willst musst du mit Stencil Buffern Spiegel implementieren. Ich könnte schwären, das hat schon jemand gemacht und entweder hier oder im englischen online gestellt Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragMi, Apr 04, 2007 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Richtig! Tom hat das mit seiner dx7test.dll gemacht ( http://www.tomspeed.com/stencil_mirror ).

Ich werd zwar nie verstehen, wie das funktioniert, aber das sieht gut aus. Very Happy
Danke für den Tipp.

Arrangemonk

BeitragMi, Apr 04, 2007 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
suchts mal nach frustum culling im google
da gibts funktionen oder erklärungen für
ingeneur
 

porcus

BeitragDo, Apr 05, 2007 0:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die Spiegel nicht unendlich groß sein müssen, versuchs mal
mit Sphere- oder Cubemapping.
 

ChristianK

BeitragDo, Apr 05, 2007 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich das mit dem Frustum Culling richtig verstanden habe, wendet die Funktion EntityInView( ) genau dieses an, oder?
 

Dreamora

BeitragDo, Apr 05, 2007 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
prinzipiell ja.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragFr, Apr 06, 2007 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Egal, ob ich den Blitz3D-Mirror, CubeMapping oder StencilMirror benutze, ich muss die gesamte Szene mehrmals rendern. Gibt es auch eine Technik bei der ein RenderWorld ausreicht?
 

Dreamora

BeitragFr, Apr 06, 2007 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö, wie sollte es auch?
Erst muss die Welt da sein, damit sie gespiegelt werden kann.

Das ist selbst bei Shadern so.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group