Teardown im Technik-Test: Dynamische Beleuchtung, schicke Schatten und mehr
Lesen Sie auf dieser Seite mehr unter anderen zur dynamischen Beleuchtung und den Schatten in Teardown.
In diesem Artikel
- Seite 1 Teardown im Technik-Test: Dynamische Zerstörung und Voxelpracht der nächsten Generation
- Seite 2 Teardown im Technik-Test: Voxelgrafik, Raytracing und Dynamik als Herausforderung
- Seite 3 Teardown im Technik-Test: Dynamische Beleuchtung, schicke Schatten und mehr
- Seite 4 Teardown im Technik-Test: Performance und Fazit
- Seite 5 Bildergalerie
Die dynamische Welt, das erfrischend kreativ-destruktive Gameplay und die Grafik auf Voxelbasis sind nicht die alleinigen Besonderheiten von Teardown. Die auffallend schicke Beleuchtung der Voxelwelten ist es ebenso. Anders als bei (halb-)statischen Spielwelten, wie sie in vielen aktuellen Titeln zum Einsatz kommen, ist Teardown voll dynamisch - aufgrund dieser Dynamik kann die Beleuchtung nicht vorberechnet, beziehungsweise teilweise statischer Natur sein, da es zu Diskrepanzen zwischen Spielwelt und Beleuchtung käme, würde die Welt durch die Interaktionen des Spielers verändert. Also kommt wie bei Minecraft RTX ein voll dynamischer Ansatz zum Tragen, allerdings nicht wie in Minecraft vollständig auf Pathtracing- und Hardware-Basis, sondern ein geschicktes Nutzen von unterschiedlichen Strahlenverfolgungstechniken und dank der Simplifizierung der Spielwelt in verhältnismäßig grobe Voxelblöcke mittels Software-Ansatz beziehungsweise ohne die Verwendung dedizierter Raytracing-Hardware.
Die Berechnung von unter anderem Beleuchtung, Schatten und Reflexionen nutzte zu Beginn noch teilweise Screen-Space-Effekte für die Berechnung der Strahlenverfolgung, dies geschieht nun indes bei Bedarf über den Voxelspace, also die gesamte, aus Voxeln bestehende Spielewelt. Die Auflösung der dazu genutzten "3D-Textur" (also Volume Texture) beträgt 5 cm, ein Pixel auf dieser 2D-Textur entspricht also 5 Qubick-Zentimeter im 3D-Voxelspace. Bei einer Weltgröße von 100 m × 100 m × 25 m (Länge, Breite, Höhe) entspräche das allerdings zwei Milliarden Voxel oder 2 GiByte Speicher, bei einem bereits optimiertem Speicherbedarf von einem Byte pro Voxel. Diese 3D-Textur, auf deren Basis die Voxelwelt erstellt wird, muss im Speicher verweilen, da sie dynamischer Natur ist und konsistent aktualisiert und zu Teilen neu geschrieben werden muss, wenn sich die virtuelle Welt durch Input des Spielers ändert. Dazu kommt der OpenGL-Befehl "glTexSubImage3D" zum Einsatz, der erlaubt, nur jene Teile der 3D-Textur neu zu schreiben, die sich verändert haben - auch dies ist eine geschickte Optimierung. Die nötige Berechnung geschieht über die CPU. Werden mehrere Blöcke beziehungsweise Objekte in der Spielwelt bewegt und/oder verändert, werden die nötigen Veränderungen als Gruppe zusammengefasst und als einzelnes großes Cluster in die 3D-Textur geschrieben.
Die Schatten werden ebenfalls mithilfe einer 3D-Textur dargestellt. Diese kann indes stark optimiert werden, da für die Schattenwürfe nur ein einzelnes Bit pro Voxel benötigt wird - es kann verschattet sein oder nicht. 1 oder 0. Ein einzelnes Byte pro Schattenvoxel zu nutzen, würde 7 Bit verschwenden, daher nutzt Teardown eine weitere Optimierung: Statt nur einen Schattenvoxel zu speichern, werden 8 nebeneinander liegende Voxel zugleich in Form eines Octrees gespeichert. Ein Octree ist eine weitere, spezielle Beschleunigungsstruktur, nicht unähnlich jenen BVHs, die für Raytracing genutzt werden. Tatsächlich wird auch der Octree in Teardown für das Raytracing genutzt, doch dazu später ein wenig mehr. Durch das Nutzen des Octrees, also einer Baumstrukur (Tree), die ausgehend von der "Wurzel" über 8 (octo) "Äste" beziehungsweise "Kinder" (children) verfügt, können sowohl die Schattenwerte von 8 benachbarten Voxel in einem einzelnen Byte gespeichert werden, zudem beschleunigt die Octree-Struktur die Berechnung: Es kann geprüft werden, ob überhaupt einer der 8 Voxel innerhalb dieser Struktur verschattet wird, indem die "Wurzel" abgefragt wird. Ist deren Wert 0, so enthält auch keiner der anderen "Äste" einen verschatteten Voxel. Ist der Wert der "Wurzel" 1, so kann der nachfolgende "Ast" hierarchisch geprüft werden, und so weiter. Eine andere "Versinnbildlichung" eines Octrees wäre ein 3D-Würfel, der wiederum in 8 kleinere Würfel unterteilt wird. Dies resultiert in einer 10 cm großen Auflösung (5 cm mit den Oktanten) und der Möglichkeit, zwei MIP-Stufen zu speichern, eine für 20 cm Auflösung und eine für 40 cm sowie in einem stark optimiertem Speicherbedarf von lediglich 292 MiByte für die gesamte 3D-Schattentextur.
Das Raytracing im Voxel-Space hat generell schon einen Vorteil gegenüber der Strahlenverfolgung bei Polygongrafik. Das Voxelgerüst ist im Grunde bereits eine Beschleunigungsstruktur und verglichen mit konventioneller 3D-Grafik, bei der die Strahlenverfolgung komplexe Polygonstrukturen und ihre Kanten abtasten muss, vergleichsweise simpel. Bei einem (undurchsichtigen) Voxel muss nur geprüft werden, ob der Volumenkörper von einem Strahl getroffen wird oder nicht. Bei Voxelgrafik muss man also für einen Raytracing-Effekt lediglich für jedes Pixel von der Kamera ausgehend einen Strahl aussenden und so lange durch den Voxel Space verfolgen, bis ein Wert ungleich Null (der Strahl trifft also auf ein Objekt bzw. in diesem Fall Voxel) erzielt wird. Dabei besteht die Möglichkeit, diese Verfolgung in "Schritten" zu vollführen, also nicht die gesamte Berechnung des Strahls zu verfolgen, sondern nur ab und zu auf Verdeckung zu prüfen.
Quelle: PC Games Hardware
Teardown (10)
Diese Herangehensweise wird bei Teardown etwa bei den volumetrischen Effekte genutzt, darunter Nebel, Rauch oder der Sprühschaum aus Ihrem Feuerlöscher. Diese Technik ist besser unter dem Namen Raymarching ("Marching" wie Marschieren, also "den Weg in großen Schritten abschreiten", statt genau zu verfolgen, wie bei "Tracing") bekannt und kommt auch in sehr, sehr vielen aktuellen Spielen für volumetrische Effekte zum Einsatz. Jene vereinfachte Form des Raytracings hat natürlich auch einige Nachteile, darunter eine reduzierte Genauigkeit. Würde Raymarching etwa für die Beleuchtung genutzt, so könnte es aufgrund dieser Ungenauigkeiten im Vergleich zu vollem Raytracing zu Light Bleeding kommen, wenn die "Schritte" des Raymarchings zu grob ausfallen und die genauen "Kanten" bzw. Grenzen der Volumen verfehlen.
Man kann einige dieser Nebeneffekte in nicht wenigen Spielen mit Raymarching beobachten, etwa Assassin's Creed, das eine Voxelbasis für die globale Beleuchtung nutzt. Ebendarum kommt Raymarching meist für diffuse Effekte wie Rauch, Nebel oder - in jüngster Zeit verstärkt - eine dynamische Wolkenpracht zum Einsatz. Neben volumetrischen Effekten kommt das "Abschreiten der Strahlen in festen Schritten", also Raymarching, in Teardown auch für die Umgebungsverdeckung zum Einsatz. Für zusätzliche, feinere Verschattungen von Details und indirekte Schatten wird obendrein Screen-Space-Raytracing genutzt. Die Technik wird durch (ein etwas weniger feines) Voxel-Space-Raytracing ersetzt, wenn die verfolgten Strahlen den Screen Space verlassen.
Quelle: PC Games Hardware
Exkurs: Leichtes Lightbleeding der GI bei Assassin's Creed Origins, welches u.a. beim Auftragen der vorberechneten globalen Beleuchtung ein Voxelgerüst nutzt.
Diese gleiche Herangehensweise wie bei der Umgebungsverdeckung wird in Teardown auch für die reguläre Beleuchtung genutzt. Ein Strahl wird ausgehend von der Kamera zu jeder Lichtquelle versandt, beginnend mit Screen-Space-Berechnungen, darauffolgend, sollte dieser verlassen werden, im Voxel Space. Da die Berechnungen auf einem Voxelgerüst basieren, würden sämtliche Schatten und auch die Beleuchtung in ebendieser Blockform gezeichnet werden. Um die Übergänge zu glätten und zugleich "umsonst" hübsche, weiche Schatten zu erhalten, wird die Lichtposition gejittert. Die Lichtquelle "zittert" also von Frame zu Frame. Ähnlich wie bei vielen temporalen Effekten oder auch TAA-Kantenglättungen verschwinden dadurch harte Übergänge beziehungsweise scharfe Kanten auf Kosten von Unschärfe. Diese Unschärfe ist für Beleuchtung und Schattierung aber gar gewünscht, da sie die ansonsten sichtbaren Voxel-Artefakte versteckt. Neben Beleuchtung und Verschattung wird diese Mischung aus Raytracing und -Marching, Screen- und Voxel-Space-Berechnungen auch für die Reflexionen sowie Effekte wie God Rays eingesetzt.
Für viele der (Raytracing)-Effekte kommt obendrein Noise zum Einsatz, um kantige Strukturen und eine allzu "klare" Darstellung - etwa bei Reflexionen oder Schatten - zu vermeiden. Noise wird in Teardown ebenfalls mittels Strahlenverfolgung erzeugt und für verschiedene Aspekte der Grafik in leicht anderer Form genutzt. Für Lichtquellen wird etwa nicht der genaue Punkt des Lichts anvisiert (ein bei einem Spot- oder Pointlight theoretisch unendlich kleiner Punkt, aus dem die Lichtquelle hervorgeht), sondern eine Kugel (bzw. Volumen) drumherum, die den Schein der Lichtquelle simuliert. Für jedes Pixel wird pro Lichtquelle und ausgehend von der Kamera ein zufälliger Punkt auf dieser Kugel als Ziel definiert, nicht die eigentliche Lichtquelle selbst. Dies resultiert in Unschärfe, die aber natürlicher auf das menschliche Auge wirkt und verhilft der Grafik obendrein zu weicheren Schatten.
Für die diffusen Reflexionen wird einfach jeder Strahl mit einem zufälligen Noise-Wert leicht verändert, dies resultiert in trüben Spiegelungen. Die Umgebungsverdeckung nutzt auf gleiche Art eine halbe Kugel, die auf der zu verdunkelnden Oberfläche sitzt und so natürlich wirkendes Noise für die AO integriert. Auch das Raymarching für die volumetrischen Effekte benötigt Noise, bei den schick ausgeleuchteten Pixelwolken ist der Effekt wohl am deutlichsten zu beobachten. Für einige andere (Raytracing-)Ansätze werden auch mehrere Strahlen pro Pixel versandt, dann der Durchschnitt dieser dazu genutzt, das Ergebnis zu "glätten" beziehungsweise mittels dieserart Noise (gemittelten Schwankungen) zu "säubern".
- Seite 1 Teardown im Technik-Test: Dynamische Zerstörung und Voxelpracht der nächsten Generation
- Seite 2 Teardown im Technik-Test: Voxelgrafik, Raytracing und Dynamik als Herausforderung
- Seite 3 Teardown im Technik-Test: Dynamische Beleuchtung, schicke Schatten und mehr
- Seite 4 Teardown im Technik-Test: Performance und Fazit

.gif)
MfG
Raff
Klar kann man ein Update machen, aber ist das wirklich besser? Denn schließlich würde ja da nur drin stehen dass es beim ermitteln der Daten mit eurem tool bei grün Probleme gibt, bei rot aber nicht. Also würden die meisten wohl das Problem entweder bei Team grün, oder Team CX sehen. Mir persönlich ist genau dieser Gedanke jedenfalls gekommen.
Ein Update wäre hier zumindest nicht schlecht. Jetzt stehen da immer noch stark fehlerbehaftete Ergebnisse völlig kommentarlos.