Seite 1 von 1

Geometry Instancing und Scene Graphen

Verfasst: 04.03.2014, 13:54
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 ...

Re: Geometry Instancing und Scene Graphen

Verfasst: 04.03.2014, 14:55
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.

Re: Geometry Instancing und Scene Graphen

Verfasst: 04.03.2014, 15:13
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.

Re: Geometry Instancing und Scene Graphen

Verfasst: 05.03.2014, 10:16
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 ...