Raytracing-Probleme in Spielen der nächsten Generation: Raytracing-Analyse in Marvels Spider-Man-Remaster





Mit der Einführung der nächsten Generation von Konsolen hat Insomniac Games begonnen, mehr Material zu veröffentlichen, das Details zu Marvels Spider-Man und Marvels Spider-Man enthüllt: Miles Morales. Beide Projekte verwenden Raytracing-Technologie. Nach Meinung von Alex Battaglia von Digital Foundry sieht sie sehr würdevoll aus, wenn nicht sogar ausgezeichnet. Für den Anfang nicht schlecht.



Beim Lesen von Kommentaren im Internet stieß er jedoch auf erhebliche Kritik in Bezug auf die Implementierung der Technologie sowie auf die Bildrate und Auflösung. In einem neuen Video zu Digital Foundry beschloss er, eine Art Tutorial zum Raytracing auf Konsolen der nächsten Generation vorzustellen und zu erklären, warum es in Marvels Spider-Man so aussieht.



Also, das Wichtigste zuerst. Lassen Sie uns genau diskutieren, wofür Raytracing in Marvels Spider-Man auf PS5 gedacht ist.



Bei 30 FPS bei 4K-Auflösung sieht Raytracing großartig aus. Gleichzeitig kann, wie in Insomniac-Spielen üblich, eine dynamische Auflösung verwendet werden oder nicht. Hier wird Raytracing auf Reflexionen im Spiel angewendet, wie sie an Autotüren zu sehen sind.







Oder in diesem Screenshot, in dem sich der Held und die Stadt in der Ferne im Gebäudefenster widerspiegeln.







Raytracing wird laut Pressemitteilung auch für die Hintergrundschattierung (Ambient Occlusion, AO) verwendet. In Screenshots oder Videos ist es schwieriger zu identifizieren. In der Regel simuliert AO Schatten durch indirekte Beleuchtung in Bereichen, in denen Licht, das um die Szene reflektiert wird, schwieriger zu erreichen ist.







In Bezug auf Kommentare in sozialen Medien und Foren ist die Qualität der Raytrace-Reflexionen enttäuschend, die auf den ersten Blick nur ein Viertel der Basisauflösung betreffen. Aber sie haben eindeutig Filter, so dass es schwer zu sagen ist.







Reflexionen werden in 1080p angezeigt, während der Rest des Bildes in 4K angezeigt wird. Kommentatoren beklagen beispielsweise, dass die Blätter in der Reflexion seltener sind oder sogar fehlen als diejenigen, die auf dem "echten" Baum zu sehen sind. Oder dass einige Objekte im Spiel, wie Autos oder Fußgänger, möglicherweise nicht in Reflexionen angezeigt werden. Oder das Fehlen von Schatten. Oder kleine Details wie einen Spider-Man-Anzug zu vernachlässigen.







All dies ist in der Tat nicht überraschend und bezieht sich auf obligatorische Maßnahmen, die als selbstverständlich erscheinen. Dies liegt an der Tatsache, dass die Strahlverfolgung in mehreren Schritten durchgeführt wird, von denen jeder die Gesamtleistung beeinflusst, die ein sehr begrenztes Budget hat.



Stellen wir uns vor, wir sind genau die Entwickler, die innerhalb eines bestimmten Budgets die realistischsten Überlegungen anstellen müssen.







Teilen wir den Raytracing-Prozess in vier Schritte ein. Nehmen wir an, wir müssen 8 ms einhalten, um Reflexionen für ein 30-FPS-Spiel mit 4K-Auflösung zu erzeugen.



Fahren wir mit dem ersten Schritt fort. Für die Strahlenmodellierung muss die GPU die Szene und die geometrischen Objekte auf und außerhalb des Bildschirms verstehen. Im ersten Schritt erstellen wir eine einfach zu lesende Version der Spielszene. Je mehr Objekte es enthält und je dynamischer sie sind, desto länger dauert dieser Schritt.



Im zweiten Schritt feuern wir Strahlen in die im ersten Schritt erzeugte Struktur.







Um zu sehen, ob der Strahl irgendwo aufschlägt, umgeben Sie alle Objekte mit unsichtbaren Trefferfeldern. Ein Strahl, der auf die Szene trifft, bewegt sich durch sie hindurch, bis er einen Treffer in der Geometrie registriert. Je mehr Strahlen wir abfeuern, je weiter sie sich bewegen oder je mehr Trefferfelder wir treffen, desto länger dauert dieser Schritt. Dieser Teil der Raytracing-Pipeline kann auf Konsolen und PCs hardwarebeschleunigt werden.



Der nächste Schritt ist die Trefferschattierung oder die Auswahl der Pixelfarbe.







Je mehr Treffer schattiert sind oder je schwieriger die Schattierung ist, desto länger dauert dieser Schritt.







Der dritte Schritt gibt uns die Farben und Schattierungen, die wir wollen, aber sie können schlechte Übergänge haben oder laut sein. Dieses Problem wird in der vierten Stufe gelöst. In der Regel dauert der Vorgang umso länger, je genauer das Ergebnis des dritten Schritts im vierten Schritt gelöscht wird.







Die gesamte Pipeline muss in insgesamt acht Millisekunden verlegt werden, und zunächst sind wir weit von diesem Ziel entfernt. Wir müssen die Schritte optimieren, um die Zeit gering zu halten und um sicherzustellen, dass unsere Reflexionen immer noch gut aussehen und zum Spieldesign passen. Dies kann in einigen Bereichen zu einer Abnahme der Reflexionsqualität und in anderen zu einer Zunahme führen.







Eine der ersten Optimierungen, die wir verwenden werden, ist die Reduzierung der Auflösung für Raytracing. Dies begrenzt die Anzahl der austretenden Strahlen und verringert die für den zweiten und dritten Schritt erforderliche Zeit.







Wie Sie im folgenden Screenshot sehen können, entspricht die Reflexion fast einem Viertel der ursprünglichen Auflösung. Diese Optimierung wird nicht nur für Konsolen-GPUs durchgeführt, sondern für alle GPUs im Allgemeinen, da Raytracing unglaublich ressourcenintensiv ist.







Werfen wir einen Blick auf einen Screenshot der The Ghost Runner-Demo mit aktivierter 4K-Raytracing-Funktion auf einer RTX2060 Super-Grafikkarte. Hier sehen wir einige Unterschiede zu Spider-Man. Unreal Engine 4, auf der das Spiel erstellt wird, verwendet eine Raytracing-Methode, die zeitlich etwas teurer, aber physikalisch genauer ist als in Spider-Man.







Der RTX 2060 Super funktioniert ähnlich wie der RTX 2070, hat dieselbe Speicherbusbandbreite wie der PS5 und denselben 8 GB Speicher. Der RTX 2060 Super ist wahrscheinlich ein guter Ausgangspunkt für den Vergleich mit der PlayStation 5-GPU.







Wenn die Szene zusammen mit Reflexionen in 4K gerendert wird und die Anzahl der Reflexionen auf dem Bildschirm so gering ist wie bei der obigen statischen Pfütze, passt die GPU kaum hinein 30 FPS. Wenn die Szene dynamischer wäre, wäre die Bildrate definitiv niedriger. Durch Verringern der axialen Auflösung der Strahlverfolgung um 50% und damit der Gesamtauflösung auf 1080p wird die Leistung um etwa 27% erhöht, sodass in der GPU freie Ressourcen verbleiben, um die Bildrate auf bis zu 30 FPS zu erhöhen.







In anderen Szenen sind dramatischere Ergebnisse zu sehen. Wie hier. Die reflektierende Glasoberfläche nimmt fast den gesamten Bildschirm ein. In diesem Fall führen Reflexionen mit nativer 4K-Auflösung zu einer Bildrate von 21 FPS. Gleichzeitig erhöht das Verringern der Auflösung von Reflexionen auf 1080p die Bildrate um 58% auf 33 FPS mit den erforderlichen 30 FPS.



Auf einer GPU mit der gleichen Leistung wie die PS5 müssen Sie Raytrace-Reflexionen mit niedrigerer Auflösung verwenden, um eine konsistente Bildrate von 30 FPS bei einer Gesamtauflösung von 4K aufrechtzuerhalten. Dann wird klar, warum Spider-Man nur Reflexionen bei 1080p verwendet, um die Kosten für die Strahlverfolgung zu senken.







Kehren wir zu unserem Berechnungsbeispiel zurück. Wir haben die Auflösung der Reflexionen reduziert, sodass die zweite und dritte Stufe jetzt weniger zeitaufwändig sind. Aber wir passen immer noch nicht in das vorgegebene Budget für die Dauer des Rahmens.



Versuchen wir, die Zeit des ersten Schritts zu verkürzen, indem wir die Dynamik oder die Anzahl der Objekte verringern, in Bezug auf die die Strahlverfolgung durchgeführt wird. In den zuvor gezeigten Screenshots fehlten möglicherweise einige dynamische Objekte in Reflexionen. Oder hier, im Gameplay-Video von Miles Morales, in Crowd-Szenen, kann man manchmal feststellen, dass einige der NPCs nicht auf Oberflächen reflektiert werden.







Wir wissen aus Erfahrung anderer Entwickler, dass das Zeichnen vieler Zeichen auf dem Bildschirm sehr ressourcenintensiv sein kann. Zum Beispiel benötigen einige Szenen in Metro Exodus mit vielen Zeichen auf dem RTX 2080 Ti mehr als 4 ms zum Rendern. In unserem Fall ist dies die Hälfte des zugewiesenen Budgets.



Das Reduzieren der Anzahl dynamischer Objekte in der ersten Stufe der Strahlverfolgung führt also zu einer Beschleunigung des Prozesses, und dann passen wir in die zugewiesenen 8 ms.







Das Ergebnis ist jedoch möglicherweise nicht so beeindruckend, wie wir es uns wünschen.



Schauen Sie sich zum Beispiel diese Screenshots von Battlefield V an.











Wie wir oben sehen, erscheinen und verschwinden Gebäude in Reflexionen. Dies ist nicht der wünschenswerteste Effekt, daher erhöhen wir die Entfernung, die die Strahlen im zweiten Schritt zurücklegen können, sowie die Entfernung, in der Objekte im ersten Schritt in der Struktur enthalten sind.







Wenn wir von Spider-Man zu unserem Rahmen zurückkehren, können wir sehen, dass die Reflexionen Objekte zeigen, die sehr weit entfernt sind. Es wäre wahrscheinlich sehr unangenehm, wenn Objekte am Horizont nicht reflektiert würden oder ständig blinken, erscheinen und verschwinden würden.







Wenn wir daher die Gebäude berücksichtigen, die sich weit entfernt von der Reflexionsquelle in den Reflexionen befinden, und die Entfernung, die die Strahlen zurücklegen, vergrößern, müssen wir etwas anderes opfern, um uns auszuzahlen.







Kehren wir zu unserer Berechnung zurück. Wir entschieden uns, entfernte Objekte in Reflexionen zu berücksichtigen und befanden uns erneut außerhalb der Grenzen unseres Budgets. Daher werden wir die Pipeline erneut auf mögliche Vereinfachungen überprüfen. Vielleicht bringt uns der zweite Schritt zurück zu den gewünschten 8 ms.



Schauen wir uns noch einmal unseren Stadt-Screenshot an. In der Reflexion im Fenster sehen Sie weniger oder sogar fehlende Blätter im Vergleich zu ihrer Darstellung im ursprünglichen Baummodell. Blätter werden hier als transparent klassifiziert, und bei transparenten Objekten dauert der zweite Schritt der Pipeline länger. Wir wissen dies aus Erfahrung mit Battlefield V, wo Partikel und Reflexionen bestimmte Szenen extrem teuer machen.



Bild



Für Spider-Man können wir die Anzahl der Blätter auf den Bäumen in den Reflexionen vor dem zweiten Schritt reduzieren. Wir werden es auch so machen, dass die Partikeleffekte nicht durch Raytracing verarbeitet werden, wie hier, wo der Nebel in der Reflexion nicht angezeigt wird.







Jetzt passen wir fast in das Rahmenbudget, überschreiten es aber immer noch leicht.







Die letzte Optimierung kann im dritten Schritt erfolgen, in dem wir Schattierungen verwenden.



Kehren wir zu unserem Screenshot zurück. Haben Sie das Fehlen kleiner Details im Spiegelbild des Spider-Man-Anzugs bemerkt? Welche sind auf seinem echten Anzug sichtbar? Wenn wir das reflektierende Material vereinfachen, dauert das Zeichnen weniger lange.







Daran ist nichts auszusetzen, da viele Spiele, die Raytracing verwenden, wie Wolfenstein: Youngblood, dieselbe Technik verwenden.







Als Ergebnis passen wir in die zugewiesenen 8 ms. So haben wir die Qualität der Reflexionen in einigen Aspekten verbessert, beispielsweise durch Hinzufügen von Reflexionen entfernter Objekte, aber gleichzeitig auf bestimmte Vereinfachungen zurückgegriffen, z. B. die Verringerung der Auflösung von Reflexionen.







Hoffentlich hat uns dieses Beispiel dabei geholfen, ein Gefühl für die Dilemmata zu bekommen, mit denen Spieleentwickler konfrontiert sind, wenn sie mit begrenzten Leistungsbudgets und teuren Technologien wie Raytracing umgehen.



All Articles