GDC 2024 im Rückblick: Pfadverfolgung, Hochskalierung und CPU-killende Technologie
ReSpec ist diese Woche etwas anders. Ich habe die Woche im sonnigen San Francisco auf der Game Developers Conference (GDC) verbracht, bin von Meeting zu Meeting gerannt und habe versucht, einen Moment Zeit zu finden, um ein paar Worte zu schreiben.
Anstelle einer normalen Kolumne haben wir beschlossen, eine Auswahl von Einträgen aus dem neu gestarteten ReSpec-Newsletter zu veröffentlichen, der abdeckt, was ich diese Woche auf der GDC gesehen habe. Wenn Sie möchten, dass Ihnen derselbe Newsletter jede Woche in Ihrem Posteingang zugestellt wird, melden Sie sich jetzt an und profitieren Sie von den exklusiven Inhalten.
Pfadverfolgung ist eine Lüge
Vielleicht ist „Lüge“ ein zu starkes Wort, um es zu verwenden, aber die Pfadverfolgung ist ziemlich schwierig, wenn es um die Implementierung in Spielen geht. Ich nahm an Sitzungen zur Pfadverfolgung in Cyberpunk 2077 und Alan Wake 2 auf der GDC teil, die beide einen gemeinsamen Nenner für die Verwendung von Pfadverfolgung in einem Spiel beschrieben, das in Echtzeit und mit einer spielbaren Bildrate laufen soll. Und es heißt ReSTIR Direct Illumination.
Erstens, wie die Pfadverfolgung funktioniert: Wir nehmen ein Pixel und zeichnen daraus eine Linie von der Kamera weg. Es kollidiert mit etwas und springt zurück. Und es geht weiter und hüpft um die Szene herum, bis es entweder in den Äther verschwindet oder an einer Lichtquelle endet. Entwickler benötigen Pfade, die an einer Lichtquelle enden, insbesondere zur Berechnung von Schatten.
Das Problem bei jedem Echtzeitkontext besteht darin, dass dieser Prozess extrem teuer ist. Die Berechnung all dieser Strahlen und all dieser Sprünge verschlingt eine Menge Ressourcen, obwohl nur ein kleiner Teil davon verwendet wird. Aus diesem Grund ist die Pfadverfolgung schon so lange eine Offline-Technik – man muss die möglichen Pfade berechnen und sie mitteln.
Das ist bei Alan Wake 2 und Cyberpunk 2077 nicht der Fall. Bei direktem Licht gewichtet ReSTIR die Lichtquellen in einer Szene und tastet nur eine Auswahl davon ab. Anschließend werden diese Samples zeitlich (über Frames hinweg) und räumlich (mit benachbarten Pixeln) geteilt. Bei einem Spiel wie Alan Wake 2 werden bestimmte Lichter stärker gewichtet, wie zum Beispiel die blauen und roten „Kinolichter“, die man in einem Bahnhof sieht.
Das Ergebnis ist ein Bild, das viel schneller entsteht, zumindest schnell genug, dass Sie ein Spiel mit einer angemessenen Bildrate und einer ordentlichen Prise Hochskalierung und Bildgenerierung spielen können.
Es ist ein interessanter Leckerbissen und etwas, das hoffentlich häufiger vorkommen wird, wenn Titan-Entwickler von Alan Wake 2 und Cyberpunk 2077 ihre Arbeit teilen.
Microsoft setzt auf Hochskalierung
Auf der GDC sprach Microsoft endlich mehr über DirectSR und schaffte es sogar, Entwickler von AMD und Nvidia dazu zu bewegen, im selben Gremium zu sitzen. Sogar zusammen! DirectSR ist keine Möglichkeit, die Upscaling-Kriege zu beenden, wie wir ursprünglich dachten, aber es bietet Entwicklern ein einheitliches Framework, mit dem sie ihren Spielen mehrere Upscaling-Funktionen hinzufügen können.
Ein großer Teil davon ist Input. Bei der Schnittstelle mit DirectSR gibt es einen standardisierten Satz von Eingaben, die Entwickler der Application Programming Interface (API) gewähren. Diese Eingaben können dann an integrierte Upscaler wie AMDs FSR 2 oder Varianten weitergeleitet werden, die spezielle Hardware erfordern, wie etwa Nvidias DLSS .
Es unterscheidet sich nicht unähnlich von Nvidias eigenem Streamline-Framework, das entwickelt wurde, um etwas Ähnliches zu erreichen, bevor AMD beschloss, nicht mitzuspielen. Es scheint, dass Microsoft als neutraler Dritter in diesem Kampf derjenige war, der alle zusammenbringen konnte.
Ich bin mir immer noch nicht sicher, wie das in Spielen tatsächlich aussehen wird. DirectSR steht Entwicklern noch nicht einmal zur Verfügung. Es ist möglich, dass sich für Endbenutzer nichts ändert und wir in den Grafikmenüs weiterhin mehrere Hochskalierungsoptionen sehen. Möglicherweise aktualisiert Microsoft Windows, um eine universelle Upscaling-Option hinzuzufügen, abhängig von der Hardware, die Sie haben. Es ist nicht klar, aber DirectSR sollte es Entwicklern dennoch einfacher machen, jede Art von Upscaling in ihren Spielen über DLSS, FSR und Intels XeSS zu implementieren.
Ein Vorteil, der ursprünglich nicht zum Tragen kam, war die Art und Weise, wie dieses System mit Updates funktioniert. Nvidia, AMD und Intel veröffentlichen ständig neue Versionen ihrer Upscaling-Technologie, die die Bildqualität geringfügig verbessern oder die Funktionsweise des Upscalings leicht optimieren. Mit DirectSR müssen Entwickler nicht alle diese Updates zu ihren Spielen hinzufügen – sie arbeiten einfach über die API.
Für mich ist das alles ein Daumen hoch. Upscaling war ein großer Streitpunkt, insbesondere bei großen Veröffentlichungen wie Starfield und Resident Evil 4 , die beim Start nur einen Upscaler unterstützten. Der einzige Nachteil ist die Frame-Generierung. Das scheint derzeit für DirectSR nicht in Frage zu kommen, daher wird es für die großen Grafikmarken auch in Zukunft noch viel Hin und Her geben.
Tod für Ihre CPU? Nicht genau
Eine der aufregendsten Ankündigungen der GDC in diesem Jahr waren Work Graphs . Ich habe letzte Woche im Newsletter darüber gesprochen, aber ich habe mir Work Graphs während Microsofts DirectX State of the Union genauer angesehen. Die Idee dahinter besteht darin, die Belastung Ihrer CPU zu verringern, indem Sie Ihre GPU ihre eigene Arbeit steuern lassen.
Das Gespräch ist etwas nuancierter. Dies gibt Ihrer GPU mehr Entscheidungsfreiheit, ähnlich wie damals, als programmierbare Shader erstmals auf Grafikkarten eingeführt wurden. Ein Arbeitsdiagramm besteht aus Knoten, und diese Knoten können weitere Knoten erzeugen, auf denen Ihre GPU arbeiten kann, anstatt auf Arbeit von der CPU zu warten. Microsoft beschrieb es als einen Compute-Shader, der einen anderen Compute-Shader starten kann.
Der offensichtliche Vorteil, den PC-Spieler schnell erkannten, war die GPU-Auslastung. Microsoft erklärte, dass das aktuelle System einen globalen Synchronisierungspunkt zwischen GPU und CPU erfordert. Das bedeutet oft, dass die GPU, da es sich um ein hochparalleles Gerät handelt, für kurze Zeit ohne Arbeit ist, während sie auf eine Synchronisierung wartet.
Was ich nicht erwartet hatte, welche Auswirkungen es auf das Gedächtnis haben würde. Bei der aktuellen Programmierung in DirectX 12 erklärte Microsoft, dass Sie den Befehl „ExecuteIndirect“ verwenden würden, der erfordert, dass Sie mehrere Puffer vorhalten. Mit Work Graphs müssen Sie diese Puffer nicht vorhalten, da die GPU ihre eigene Arbeit starten und weiterhin Arbeit für sich selbst generieren kann.
Wie wichtig das ist, demonstrierte Robert Martin von AMD anhand einer Szene, die 3,3 GB Speicher erforderte. Bei Work Graphs betrug die Speichernutzung nur 113 MB, und das ging mit einer kleinen Leistungssteigerung einher. Wie in der Präsentation beschrieben, „skaliert der Speicherbedarf mit der Größe der GPU, nicht mit der Größe einer Arbeitslast.“
Work Graphs sind für Endbenutzer unsichtbar, aber es ist wirklich die nächste Grenze für die Grafikprogrammierung, und wie AMD, Nvidia und Microsoft alle sagten, ist es etwas, worauf Entwickler seit Jahren hinarbeiten. Weniger Speicherverbrauch und bessere Leistung klingen für mich gut. Wir müssen nur warten, bis Work Graphs in echten Spielen für Furore sorgt.