Q2VKPT: Quake II mit realistischer Beleuchtung komplett neu geschrieben


Q2VKPT ist das erste spielbare Spiel mit Vollstrahlverfolgung, das mithilfe der gleichen modernen Technologien wie in der Filmindustrie eine volldynamische Beleuchtung in Echtzeit simuliert (siehe Disneys praktischen Leitfaden zur Pfadverfolgung ).

Die jüngste Veröffentlichung von GPU-Modellen mit Raytracing-Funktionen hat völlig neue Möglichkeiten für die Zukunft der Spielgrafik eröffnet. Die ordnungsgemäße Verwendung von Raytracing ist jedoch keine triviale Aufgabe. Während einige Spieleentwickler begannen, die Möglichkeiten des Renderns von Schatten und Reflexionen zu untersuchen, war Q2VKPT das erste Projekt, das eine effektive allgemeine Lösung für alle Arten der Lichtübertragung implementierte: direkte, diffuse und reflektierte Beleuchtung (siehe Abschnitt "Medien"). In der Filmindustrie hat eine solche Vereinheitlichung zu einer signifikanten Verbesserung der Flexibilität und Produktivität geführt . Es besteht die Möglichkeit, dass eine solche technologische Entwicklung in Spielen in den nächsten Jahren eine ähnliche Verbesserung der visuellen Genauigkeit und des Grafikrealismus verspricht. Dieses Projekt sollte als Bestätigung des Konzepts für den Bereich der Computergrafikforschung und der Spielebranche dienen. Darüber hinaus können Spielefans einen Blick auf die potenzielle Zukunft von Spielgrafiken werfen. Neben der Verwendung von hardwarebeschleunigter Strahlverfolgung bietet Q2VKPT seine Effizienz hauptsächlich dank der adaptiven Bildfiltertechnik , die Änderungen in der Beleuchtung der Szene intelligent verfolgt, um so viele Informationen wie möglich aus früheren Berechnungen wiederzuverwenden.

Ăśber das Projekt


Das Projekt wurde als Open Source auf GitHub veröffentlicht . Es integriert unseren Vulkan Ray Tracer in den Q2PRO- Client. Das Projekt entstand aufgrund des Bedarfs an Computergrafikforschung für schnell laufende Testinhalte. Es ist motiviert durch die ersten faszinierenden Ergebnisse eines 2016 geschriebenen Path Trace Renderers.

Die Geschichte


VKPT und Q2VKPT wurden von Christoph Schied als Hobbyprojekt entwickelt, um die Ergebnisse der Computergrafikforschung in diesem Spiel zu testen. Derzeit umfasst das Projekt 12.000 Codezeilen und ersetzt den ursprünglichen Grafikcode von Quake II vollständig. Der Prototyp wurde ursprünglich in OpenGL unter Beteiligung von Johannes Hanika (experimentelles Raytracing , Shader, GL / Vulkan-Korrekturen), Addis Diettebrand (Beleuchtungshierarchie, Debug-Visualisierung) und Tobias Zirr (Beleuchtungsproben) geschrieben. Website, Informationstexte) und Florian Rybold (anfängliche Hierarchie der Berichterstattung). Zusätzliche Unterstützung leisteten Stefan Bergmann, Emanuel Schrade, Alice Jung und Christoph Peters (ein bisschen Lärm ).

Herunterladbare Materialien



Video




Erfolglose Aufnahmen in der Entwicklung: Video mit Störungen 1 , Video mit Störungen 2 .

Screenshots


Wir empfehlen Ihnen, das Video anzusehen oder das Spiel selbst zu spielen, da eine volldynamische Beleuchtung in Bewegung viel besser zu spĂĽren ist.

Volldynamische globale Beleuchtung, die mithilfe von Raytracing erstellt wurde. Durch Raytracing, Hochglanzreflexionen und eine Stufe der indirekten Lichtreflexion erzeugte Schatten werden hinzugefĂĽgt










Der Ausgang des Pfad-Tracers (links) und des angewendeten RauschunterdrĂĽckungsfilters (rechts)

Screenshot-Vergleich


Technologie


Q2VKPT ist in der Vulkan-API implementiert, um die neuen Hardware-Raytracing-Funktionen nutzen zu können, die im letzten Jahr eingeführt wurden. Dank ihnen kann das Spiel mit voller Strahlverfolgung und dynamischer Schattierung mit realistischen Modellen der globalen Beleuchtung, die in Echtzeit berechnet werden, nahezu 60 FPS (2560 x 1440, RTX2080Ti) erreichen. Durch die Verwendung der Pfadverfolgung für eine volldynamische Beleuchtung können Sie die Schattierung von Spielszenen erheblich verbessern und auf natürliche Weise ein komplexes Zusammenspiel von scharfen und glatten Schatten, glänzenden Materialien und prospektiv korrekten Reflexionen erzeugen. Darüber hinaus kann sich Licht natürlich überall ausbreiten und Szenen verbinden, wie sie es in der realen Welt tun. Herkömmliche Lösungen mit vorberechneter Beleuchtung oder groben Raster-Näherungen in Echtzeit können solche Details niemals mit vergleichbarer Auflösung erzielen, da die gesamte Informationsmenge über die Beleuchtung alle Speichergrenzen überschreitet.

Technische Details


Q2VKPT verwendet viele Techniken, um rechenintensive Methoden an Spiele anzupassen, die zuvor nur in der Filmindustrie verwendet wurden. Ihr Kern ist ein adaptiver Zeitfilter, der die Ergebnisse von Berechnungen früherer Frames intelligent wiederverwendet (dies ist Christophs vorheriges Forschungsprojekt ). Dieser Filter wird zusätzlich zu dem bereits weit verbreiteten zeitlichen Anti-Aliasing verwendet und erweitert den Prozess der Verfolgung temporärer Änderungen von einem einfachen Bildraum zu einem hochdimensionalen Raum von Lichtausbreitungspfaden. Das Verfolgen von Änderungen in Pfaden ist erforderlich, da das Verfolgen von Pfaden ein randomisierter Algorithmus ist, der sowohl seine Stärken als auch seine Schwächen aufweist: Er kann alle Formen der Lichtausbreitung allgemein verarbeiten, es kann jedoch lange dauern, bis die Ergebnisse zuverlässig werden, zu lange für einen Frame im Echtzeitspiel. Eine einfache Lösung im Bildraum (z. B. zeitliches Anti-Aliasing) kann dieses Maß an Unsicherheit nicht bewältigen.

Im Laufe der Zeit haben wir verschiedene Techniken untersucht, um Lichtquellen zu finden, die jede Oberfläche im Spiel beeinflussen. Die Auswahl der richtigen Lichtquellen ist für die Bildqualität von entscheidender Bedeutung. Wenn Sie die falsche Wahl treffen, erhalten Sie eine sehr unzuverlässige Ausgabe vom Pfad-Tracer, wodurch der Zeitfilter alle schönen Details entfernt, die der Pfad-Tracer hätte erstellen sollen. Im ursprünglichen Prototyp wurde die vollständige Hierarchie der in der Filmindustrie verwendeten Lichtquellen verwendet: Durch Aufteilen der Lichtquellen nach der Hierarchie können wir gleichzeitig den Einfluss mehrerer Quellen berechnen, wodurch entfernte und schwache Quellen sowie Quellen, die in die falsche Richtung weisen, schnell von der Berechnung ausgeschlossen werden können. Es stellte sich jedoch heraus, dass solche Berechnungen schwer genau durchzuführen sind und die Berechnungskosten für das Durchlaufen der Hierarchie schwer zu kontrollieren sind. Da das ursprüngliche Quake II viele potenziell sichtbare Bereiche (potenziell sichtbares Set) verwendet hat, um unsichtbare Teile der Szene abzuschneiden, haben wir uns entschlossen, für jeden Teil der Szene aus diesen Sätzen Listen potenziell sichtbarer Quellen zu extrahieren. In der aktuellen Version haben wir eine teilweise genaue Berechnung des Einflusses jeder Quelle in der Liste implementiert und zufällig die entsprechende Teilmenge dieser Listen in jedem Frame ausgewählt. Daher findet der Renderer schnell alle Lichtquellen und wir können alle Berechnungen des Lichteffekts für kontrollierte, konstante Zeiträume durchführen.

Fragen und Antworten


Warum stĂĽrzt mein Spiel ab?


Wir machen dieses Projekt in unserer Freizeit, daher haben wir nicht genug Kraft für eine sorgfältige Qualitätskontrolle. Bitte senden Sie einen Fehlerbericht an den Issue Tracker unseres GitHub-Repositorys!

Warum gibt es keine Partikel? Ich brauche Fliegen und Funken von Railgun!


Leider hatten wir nicht genug Zeit, um der Railgun Lichtquellen hinzuzufĂĽgen. Wie bei anderen Partikeln hat die Entscheidung, Raytracing durchzufĂĽhren, den Prozess des Renderns von Partikeln nur geringfĂĽgig erschwert. Wenn wir die Zeit finden, werden wir sie in Zukunft reparieren!

Heutzutage sehen Spiele so realistisch aus! Warum Pfadverfolgung verwenden?


Moderne Spiele haben die Fähigkeiten traditioneller Spiele, die auf gerasterten Grafiken basieren, erheblich erweitert. Diese Verbesserungen haben jedoch ihren Preis: Die Rendering-Engines moderner Spiele sind zu äußerst komplizierten Sätzen hoch zielgerichteter Techniken geworden. Um ein akzeptables Bild ohne Artefakte zu erzielen, müssen Beleuchtung, Schatten und Reflexionen in vielen Auflösungen und Maßstäben individuell berechnet werden. Trace-Pfade und andere Monte-Carlo-Rendering-Techniken ermöglichen es Ihnen, einen Ausweg aus diesem immer komplizierter werdenden System zu finden. Tatsächlich haben sie dieses Problem in der Filmindustrie bereits gelöst . Unser Prototyp ist die erste Antwort auf die Frage, wie dies in der Videospielbranche erreicht werden kann.

Quake II ist ein uraltes Spiel! Wenn diese Technologien eine Zukunft hätten, würde sie heute mit einer Frequenz von 6000 FPS funktionieren!


Ja, Quake II ist ein ziemlich altes Spiel mit einer relativ geringen Geometriekomplexität, aber der Hauptbeschränkungsfaktor für die Pfadverfolgung ist nicht die Strahlverfolgung oder die Geometriekomplexität. Tatsächlich kann der aktuelle Prototyp viel mehr Strahlen verfolgen, ohne dass die Bildrate merklich verringert wird. Der Rechenaufwand für die im Q2VKPT-Prototyp verwendeten Techniken hängt hauptsächlich vom Rechenaufwand für die (indirekte) Lichtstreuung und der Anzahl der Lichtquellen ab. Quake II hatte anfangs viele Lichtquellen und in dieser Hinsicht ist es immer noch ein ziemlich modernes Spiel. Darüber hinaus hängt die Anzahl der Lichtstreuungsereignisse nicht von der Komplexität der Szene ab. Daher können wir davon ausgehen, dass die von uns verwendeten Techniken für modernere Spiele gut geeignet sind.

Warum Beben II?


Weil die Quellen von Quake II gemeinfrei sind und das Spiel selbst eine lange Geschichte des Modding hat. Dies ist ein ausgezeichneter Sandkasten zum Testen wissenschaftlicher Forschung in der realen Welt. Insbesondere hat das Spiel ein aktives und wettbewerbsfähiges Gameplay, das hohe Anforderungen an die Leistung und Zuverlässigkeit der gerenderten Techniken stellt. Und schließlich bleibt Quake II in gewisser Weise immer noch ein ziemlich modernes Spiel, da es ursprünglich mit einem komplexen und künstlerischen Lichtdesign veröffentlicht wurde.

Wie kann ich Q2VKPT als Benchmark verwenden?


Öffnen Sie die Konsole durch Drücken der Taste "~". In der Demoversion von Quake 2 können Sie den Befehl „timedemo 1; Demo q2demo1 ", in der Vollversion - der Befehl" timedemo 1; Demo Demo1 ". Der integrierte Profiler wird mit dem Befehl vkpt_profiler 1 gestartet. Es enthält Details zu den GPU-Timings für einzelne Rendering-Schritte.

Wie unterscheidet sich die Pfadverfolgung von der Strahlverfolgung?


Die Pfadverfolgung ist ein eleganter Algorithmus, der die vielen komplexen Arten der Lichtausbreitung und -streuung in virtuellen Szenen simulieren kann. Die physikbasierte Lichtsimulation bietet ein qualitativ hochwertiges Rendering. Die Pfadverfolgung verwendet die Strahlverfolgung, um die Sichtbarkeit zwischen Streuereignissen zu bestimmen. Raytracing ist jedoch nur eine primitive Operation, die für viele Zwecke verwendet werden kann. Daher kann Raytracing allein keine realistischen Bilder erzeugen. Zu diesem Zweck können Sie Lichtausbreitungsalgorithmen wie die Pfadverfolgung verwenden. Trotz der Tatsache, dass es elegant und sehr leistungsfähig ist, ist die naive Pfadverfolgung sehr kostspielig und zeitaufwändig, um stabile Bilder zu erstellen. Unser Projekt verwendet einen intelligenten adaptiven Filter, der die maximal mögliche Informationsmenge in wenigen Bildern und Pixeln wiederverwendet, um zuverlässige und stabile Bilder zu erstellen.

Path Tracing und Ray Tracing - die Zukunft der Gaming-Grafik?


Die jüngste Einführung der GPU mit Raytracing-Funktionen hat völlig neue Möglichkeiten für die Zukunft der Spielgrafik eröffnet. Für die ordnungsgemäße Verwendung von Raytracing ist jedoch ein nicht trivialer Ansatz erforderlich. Ziel unseres Projekts ist es herauszufinden, was fehlt, um einen direkten Weg in die Zukunft der Raytracing-Grafik zu finden. Obwohl einige Probleme in der wissenschaftlichen Forschung bereits gelöst wurden, bleiben viele echte Probleme unsichtbar, bis Sie mit der Implementierung des vollständigen Renderers des Spiels beginnen. In Zukunft planen wir, einige dieser Probleme zu untersuchen, z. B. eine bessere Lichtabtastung, eine verbesserte Filterung und eine konsistentere Software-Renderer-Struktur. Damit sich diese Änderungen verbreiten, sind gute Lösungen für neue, ungewöhnliche Renderer-Aufgaben erforderlich, die auf Raytracing und Pfaden basieren.

Wird die Verfolgung des Pfades endlich alle Grafikprobleme lösen?


Pfadverfolgung und ähnliche Methoden lösen elegant viele komplexe Aufgaben der Spielgrafik. Ihr probabilistischer Charakter bringt jedoch eine ganze Reihe neuer Aufgaben mit sich, deren Lösung erforderlich ist, um klare (rauschfreie) Bilder von hoher Qualität zu erstellen. Die Filtermethode im Q2VKPT-Prototyp ist der erste Schritt zu zuverlässigen einheitlichen Methoden, mit denen Sie beim Rendern mithilfe der Pfadverfolgung einen vollständig einheitlichen groben Suchansatz implementieren können. In den kommenden Monaten und Jahren erwarten und hoffen wir weitere Studien in diese Richtung!

Verwendet Q2VKPT Beleuchtungskarten aus dem Originalspiel?


Die ursprüngliche Quake 2-Engine verwendet vorberechnete Lichtkarten mit weichen Schatten und diffusem indirektem Licht. Q2VKPT ersetzt statische Beleuchtung vollständig durch eine vollständig dynamische Simulation, die sowohl statische als auch dynamische Lichtquellen vereint.

Wie viele Strahlen emittiert Q2VKPT pro Pixel?


Die Anzahl der emittierten Strahlen hängt von der ersten sichtbaren Oberfläche ab. Auf undurchsichtigen Oberflächen verwendet Q2VKPT einen Strahl für jedes Pixel, um eine direkte und indirekte sichtbare Oberfläche zu finden. Zusätzlich sendet Q2VKPT für beide Oberflächen einen Strahl an zufällig ausgewählte Lichtquellen. Daher sendet Q2VKPT mindestens 4 Strahlen für jedes Pixel aus.

Verwendet Q2VKPT Rasterisierung?


Traditionell wird ein Rasterizer verwendet, um in Spielen von der Kamera aus sichtbare Oberflächen zu finden. In Q2VKPT erfolgt das Rendern vollständig durch Raytracing, sodass der Rasterizer nicht verwendet wird (mit Ausnahme von zweidimensionalen Elementen der Benutzeroberfläche).

Source: https://habr.com/ru/post/de436754/


All Articles