Geometry Instancing und Scene Graphen

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
snoob741
Beiträge: 76
Registriert: 03.04.2012, 22:36

Geometry Instancing und Scene Graphen

Beitrag von snoob741 »

Seit kurzem setze ich mich intensiver mit OpenGL 3.x auseinander. Aktuell habe ich mir nun einge Artikel und Sourcen zum neu verfügbaren Geometry Instancing angeschaut. Der Sinn ist mir klar und die Umsetzung auf den ersten Blick auch nicht zu kompliziert. Die Frage ist, wie macht das ganze einen vernünftigen Sinn im Zusammenhang mit einem Scenen Graphen?

Nehmen wir mal einfach an, wir haben ein kleinen Wald. Die Geometrie vieler Bäume ist identisch, so dass Geometrie Instancing hier sinn macht, um die Rendercalls auf ein Minimum zu reduzieren. Normalerweise würde ich im Szenen Graphen ja zunächst einmal prüfen, was sichtbar ist und eine entsprechende Render-Queue aufbauen, diese entsprechend der Z-Order abarbeiten und jedes Ojekt mit seinen aktuellen Node-Translation Daten rendern.

Wenn ich das richtig sehe, müsste ich hier mit dem Instanced Rendering ansetzen. D.h. ich hätte nur noch 1x die Geometriedaten und müsste dann entsprechend der Queue die Node-Translation für die jeweiligen Instanzen aufbereiten und dann alles per single call rendern. Richtig?

Macht das ganze Sinn? Wenn ja wie verhält sich das ganze, z.B. im Wald bzgl. der Z-Order wenn ich z.B. 2 Baumsorten gleichzeitig per Geometry Instancing rendern würde? Bzw. wenn ich das mixe, d.h. auch Elemente habe die per einfachem draw call gerendert werden und zwischen den Objekten liegen, die per instanced rendering gerendert werden? Genau diese Problematik wird ja eigentlich durch den Graphen behandelt ...
Benutzeravatar
Schrompf
Moderator
Beiträge: 4855
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Geometry Instancing und Scene Graphen

Beitrag von Schrompf »

Nein, das Thema "davor <-> dahinter" bei der Zeichenpriorität erledigt man eigentlich mit dem DepthBuffer. Tiefensortierung ist nur ein einfacher Trick für teiltransparente Objekte mit nur begrenzter Wirksamkeit.

Sortiere die RenderQueue nach möglichst wenig Shaderwechseln, Texturwechseln und Mesh-Wechseln, dann liegen mesh-identische DrawCalls automatisch beeinander. Und dann kannst Du auch schnell feststellen, ob es darüberhinaus überhaupt noch was bringt, die Mesh-Instanzen dann per Instancing zusammen zu zeichnen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Geometry Instancing und Scene Graphen

Beitrag von Artificial Mind »

Auch wenn es OpenGL 4+ ist:
https://www.youtube.com/watch?v=-bCeNzgiJ8I&t=28m01s (Da fängt es an)
Oder hier das ganze video:
[youtube]-bCeNzgiJ8I[/youtube]

Die schlagen sehr viele Optimierungen vor und im Endeffekt hat man dann (fast) nur noch Shaderwechsel.
snoob741
Beiträge: 76
Registriert: 03.04.2012, 22:36

Re: Geometry Instancing und Scene Graphen

Beitrag von snoob741 »

Danke für Eure Anregungen. Das Video ist sehr gut und hat einige Fragen geklärt, na dann werde ich mal schauen,
wie ich das Umsetze. Denke Schrompfs Ansatz mit dem Sortieren der Queue ist ein guter, machbarer Weg ...
Antworten