World of Tanks mit Software-Raytracing auf DX11-Grafikkarten: Hardcore-Interview zur Technik und Zukunft
Mit dem jüngsten Update erhält World of Tanks Raytracing - und das ohne, dazu Raytracing-Hardware vorauszusetzen. Wir haben mit Render Team Lead Bronislav Sviglo und Graphics Engine Developer Denis Ishmukhametov gesprochen, die beide direkt mit dem Thema vertraut sind und über einen ausführlichen Wissensstand verfügen. Im Interview quetschen wir die beiden Profis zu Raytracing und ihrem Software-Ansatz im Speziellen gehörig aus.
Als PC-Gaming-Community mit einem ausdrücklich starken Hardware-Fokus interessieren wir uns zusammen mit unseren Lesern natürlich sehr für das aktuell in Spielen technisch Machbare. Dahingehend kam uns ein Interview-Angebot von Wargaming sehr gelegen, denn die Entwickler haben mit dem jüngsten Update Raytracing in ihren außerordentlich beliebten Free-to-play-Titel World of Tanks integriert. Das allein wäre schon ein beachtenswerter Umstand, denn noch gibt es nicht allzu viele Spiele, die auf Raytracing setzen.
Wirklich bemerkenswert ist allerdings der Fakt, dass Wargaming mit ihrem Ansatz keinerlei Raytracing-spezifische Hardware - wie etwa Nvidias RTX-GPUs - voraussetzen, sondern auf eine Software-Lösung setzen. Diese Herangehensweise benötigt darüber hinaus nicht die in Direct-X-12-Schnittstelle integrierte DXR-Bibliothek, sondern setzt lediglich eine Direct-X-11-fähige Grafikkarte voraus. Wir fragen die direkt mit dem Projekt betrauten Entwickler Bronislav Sviglo und Denis Ishmukhametov, weshalb sie diesen Ansatz gewählt haben, was die Vor- und Nachteile bei einem solchen Software-Ansatz sind und wie sie Raytracing im Generellen betrachten.
Bitte beachten Sie, dass es sich bei dem Gespräch um ein anspruchsvolles Thema handelt und die Ausführungen sehr komplexe Details und Eigenschaften der Technologie enthalten, die Interview-Partner und der zuständige Redakteur obendrein viele Fachausdrücke verwenden und es teils einige kleinere Schwierigkeiten beim Überwinden der gleich mehrschichtigen Sprachbarrieren gab. Wir haben uns indes darum bemüht, die Sprache auf einem möglichst einfachen Niveau zu halten, nur begrenzt Fachlatein zu verwenden und haben bei besonders komplexen Ausführungen versucht, mittels Anmerkungen der Redaktion ein Plus an Klarheit zu schaffen. Trotzdem handelt es sich beim Interview um eine Thematik gehobenen Anspruchs, eine gewisse Basiskenntnis wird für ein umfassendes Verständnis vorausgesetzt, gehobenes Wissen in Bezug auf Computer-Grafik ist sehr vorteilhaft.
Auf dieser Seite
Ein genaues Launch-Datum wird in der jüngsten Pressemitteilung noch nicht genannt. Zum aktuellen Zeitpunkt kann eine Demo der Technik unter folgendem Link heruntergeladen werden: https://wotencore.net/en/
Die beiden im Interview befragten Entwickler, Render Team Lead Bronislav Sviglo und Graphics Engine Developer Denis Ishmukhametov, kommen darüber hinaus auch in einem Making-of-Video zum Thema zu Worte, welches nach unserem Gespräch veröffentlicht wurde und einige für den Raytracing-Ansatz spezifische Fakten vereinfacht darlegt und visuell untermalt, was sicherlich das Verständnis vereinfacht. Wir können Ihnen das Raytracing-Making-of an dieser Stelle ans Herz legen, es sollte dabei helfen, einige etwas kompliziertere Umstände im Interview zu erklären.
World-of-Tanks-Entwickler zur technischen Umsetzung ihres "Software-Raytracing"
➤ PCGH: Lasst uns direkt zum Thema kommen: Mit dem neuen Update von World of Tank implementiert ihr Raytracing für die Schattendarstellung - und zwar unter Direct X 11 und ohne dafür spezifisch ausgelegte Hardware. Dazu nutzt ihr Intels Embree, eine Art Raytracing-Middleware, korrekt? Wie genau funktioniert das und warum habt ihr euch entschieden, den dazu nötigen Aufwand zu stemmen?
Bronislav Sviglo: Ich darf anfangen? Der Hauptgrund, warum wir uns dazu entschieden haben, keine für Raytracing spezifisch ausgelegte Hardware voraus zu setzen oder dafür dedizierte Hardware zu nutzen (Anmerkung: wie etwa Nvidias RTX), ist ganz einfach, dass wir eine große Anzahl Spieler haben, die auch eine breite Varianz sehr unterschiedlicher Hardware nutzen. Aktuell nutzen wir Direct X 11 als unsere Haupt-Render-API, daher haben wir uns entschieden, uns beim Thema Raytracing so breit wie möglich aufzustellen und daher Raytracing mittels eines Software-Ansatzes anzubieten. Im Grunde läuft es so: Rund 90 Prozent unserer Spieler verwenden Direct-X-11-Hardware und wenn wir Raytracing über Direct X 11 anbieten können, werden unsere Spieler vielleicht feststellen: He, das funktioniert ja mit meiner Hardware!
Wenn es um Performance geht, handelt es sich bei Raytracing natürlich um eine ziemlich anspruchsvolle Technologie, ihr solltet also nicht erwarten, dass es die Technik umsonst gibt, aber...
➤ PCGH: Man sollte also nicht unbedingt spielbare Bildraten mit einer GTX 750 Ti erwarten, wenn man Raytracing zuschaltet - aber ihr wollt, dass es zumindest potenziell möglichst viele Spieler nutzen können, richtig? - Oder Spieler die Raytracing-Grafik zumindest ausprobieren können, um sich dann zu entscheiden, ob die gesteigerte Optik-Pracht den Leistungsverlust für sie ganz individuell wert ist?
Bronislav Sviglo: Ja, exakt. Der Hauptgrund für unsere Entscheidung, Raytracing mit einem Software-Ansatz unter Direct X 11 zu ermöglichen, ist, Raytracing auf prinzipiell jeder Hardware, die von unseren Spielern genutzt wird, möglich zu machen. Also: Da die Leistungsanforderungen hoch sind, solltet ihr damit rechnen, dass es bei Ultra-Details zu einem gewissen Performance-Einbruch kommt, aber wenn ihr beispielsweise 200 Fps habt und dann durch Raytracing 50 verliert...
➤ PCGH: Raytracing hätte bei einer so hohen Leistung also nicht wirklich negative Auswirkungen.
Bronislav Sviglo: Ja, genau. Naja, beziehungsweise vielleicht ist das tatsächlich noch für einige auf extrem hohe Bildraten abzielende High-Fps-Spieler ein Problem, aber generell gesehen wäre die im Beispiel genannte Leistung mehr als ausreichend, um Raytracing zuzuschalten und dadurch eine grafische Verbesserung zu erhalten - die gesteigerte Qualität und Präzision ist besonders deutlich bei Nahaufnahmen zu sehen und wenn ihr euch für Panzer interessiert und wenn ihr gern die vielen kleinen Details der komplexen Geometrie unserer Modelle in Augenschein nehmt, bringt unsere Raytracing-Technologie einen wirklich deutlichen Vorteil.
Raytracing im Vergleich (1)
➤ PCGH: Cool, wie genau sieht das Raytracing in World of Tanks aus - also welche Vorteile bietet es gegenüber herkömmlichem Shadow-Mapping und welche Schatten genau werden mittels Raytracing dargestellt? Gibt es neue Schatten für kleine Details oder ist es ein breiterer Ansatz? Was ist der größte Unterschied oder Vorteil gegenüber konventioneller Schattendarstellung?
Denis Ishmukhametov: Diese Frage kann ich beantworten: Also, mit unserer aktuell in World of Tanks genutzten Schatten-Darstellung auf Basis von konventionellem Shadow-Mapping haben wir drei große Probleme: Zum Ersten haben unsere konventionellen Schatten, da wir Shadow-Mapping nutzen, eine beschränkte Auflösung. Wenn ihr also näher an einen Schatten herankommt oder heranzoomt, seht ihr hässliche Pixeltreppchen an den Rändern - ein gegebener Umstand beim Einsatz der Shadow-Mapping-Technologie. Das zweite Problem hat mit dem Shadow-Bias oder auch dem Peter-Panning benannten Nebeneffekt (Anmerkung der Redaktion: "Schwebende" - daher die Peter-Pan-Referenz -, von den eigentlichen schattenwerfenden Objekten durch einen schmalen Streifen losgelöste Shadow-Maps) zu tun: Um ungewollte Selbstverschattung von Objekten zu vermeiden, wenden Shadow-Mapping-Algorithmen einen Bias (Anmerkung: in diesem Sinne am ehesten zu übersetzen mit: "Schnitt", "Voranpassung") an, um Überlappungen mit dem eigentlichen Objekt zu vermeiden. Wenn ihr also kleine Objekte oder beispielsweise kleine Details an einem Panzer wie Luken oder deren Scharniere betrachtet, seht ihr, dass per Shadow-Mapping dargestellte Schatten diese nicht berühren - zwischen Schatten und Objekt befindet sich eine kleine Lücke, die per Shadow-Mapping dargestellten Schatten hinken der Objektdarstellung ein wenig hinterher - das ist das zweite Problem.
Die dritte Problemstelle bei Shadow-Maps, mit der wir zu kämpfen haben, ist die Renderdistanz von Schatten - mit Shadow-Mapping sind wir in der Darstellungstiefe beschränkt, obwohl wir bereits Cascaded Shadow Maps nutzen (Anmerkung: Mehrere übereinandergelegte, in ihrer Auflösung mit der Distanz immer gröber und größer werdende Schatten-Texturen). Es gibt also mehrere Abstufungen, aber die sind dennoch in ihrer Distanz limitiert. Wenn ihr also beispielsweise auf einen Panzer blickt, der 100 Meter entfernt steht, dann könnt ihr sehen, wie dessen Schattenwürfe langsam ausblenden, wenn ihr euch weiter von dem betreffenden Objekt entfernt.
Mit Raytracing verschwinden alle drei Probleme auf einen Schlag. Wir erhalten akkurate Kontaktschatten für jedes noch so kleine Objekt, wir haben im Prinzip eine unbeschränkte Schattenauflösung - es ist ein komplett anderer Algorithmus, der keine spezifische Auflösung nutzt und wenn ihr heranzoomt, könnt ihr sehen, dass die Schattenauflösung im Grunde unendlich ist...
➤ PCGH: Weil es sich bei den Raytracing-Schatten im Gegensatz zu Shadow-Mapping nicht mehr um eine Textur handelt, auf welche die Schatten gerendert werden und die dann über die Geometrie gelegt wird, sondern um einen Per-Pixel-Ansatz, korrekt?
Denis Ishmukhametov: Ja, ihr könnt deshalb nah an die Raytracing-Schatten herankommen oder -zoomen, ohne dass diese aufpixeln, weil jeder Pixel einen Shadow-Ray versendet und so individuell verschattet werden kann. Und um noch mal auf unser drittes Problem mit der Distanz zurück zu kommen, wir können die Schatten auch bis in größte Entfernungen rendern, egal wo sie sich auf der Map befinden, also beispielsweise selbst Kilometer entfernte Panzer einen Schatten werfen lassen. Wenn ihr also durch euer Fernglas oder Zielfernrohr schaut, seht ihr, dass mit Raytracing Schatten in jeder Entfernung gerendert werden.
Raytracing im Vergleich (2)
Ein weiterer visueller Vorteil der Raytracing-Schatten ist, dass wir damit Phyically Based Soft Shadows erhalten. Das ist ein Punkt der bislang mit Shadow-Mapping sehr, sehr schwierig umzusetzen war. Es gibt zwar einige Algorithmen, die versuchen, diesen Umstand zu simulieren, aber diese bei Shadow-Mapping genutzten Ansätze verlassen sich sehr stark auf unpräzise Annahmen und Annäherungstricks. Mit Raytracing erhält man einen physikalisch korrekten Ansatz.
➤ PCGH: Du sprichst von Techniken wie beispielsweise Percentage Closer Soft Shadows oder Contact Hardening Shadows - diese Ansätze, um Shadow-Mapping optisch natürlicher wirken zu lassen, sind ja obendrein auch aufwendig zu berechnen und speicher- sowie leistungstechnisch nicht gerade günstig.
Denis Ishmukhametov: Genau, diese Techniken sind recht teuer was die Performance betrifft und es handelt sich dabei trotzdem nur um eine ungenaue und unsaubere Annäherung. Aber mit Raytracing ist das Ergebnis nun sehr nahe an der Realität, auch weil wir Lichtquellen nun als Volumes behandeln, nicht mehr als Punkte. Wenn wir also die Sonne in unserem Spiel nehmen, die im Spiel - aber auch in der Realität - eine bestimmte Größe hat, verschießen wir also von jedem Pixel auf dem Schirm aus einen Ray zu dieser Lichtquelle und prüfen, ob sich ein Objekt zwischen dem Ausgangspixel des Rays und der Lichtquelle befindet. Dies geschieht über mehrere Frames zufällig, mit einem Ray versuchen wie also über die Zeit einen möglichst großen Teil der Lichtquelle zu erfassen. So erhalten wir unsere Soft-Shadows und je weiter entfernt sich das schattenwerfende Objekt von dem Ursprungspixel befindet, desto weicher und undeutlicher wird automatisch auch der Schatten. Dies hängt aber auch von der Größe der Lichtquelle ab. Aktuell unterstützen wir allerdings nur Raytracing-Schatten bei den Panzern und von der Sonne, also werfen auch nur die Panzer unsere Raytracing-Soft-Shadows und außerdem nur, wenn sie von der Sonne beschienen werden.
Wir verwenden allerdings auch nur sehr wenige andere Lichtquellen auf unseren Maps, denn die sind meist große, weite und offene natürliche Gebiete, daher haben wir aktuell keinen wirklichen Bedarf, auch andere Light-Sources Raytracing-Schatten werfen zu lassen.
Raytracing im Vergleich (3)
➤ PCGH: Interessant. Wir finden es besonders spannend, dass es keine Beschränkung bei der Sichtweite gibt, das ist ein typisches Problem und ein teils sehr störender Umstand bei Shadow-Mapping. Kommt diese unbegrenzte Sichtweite mit einigen Nebeneffekten daher? Erhöhen sich beispielsweise - jedenfalls theoretisch betrachtet - die Anforderungen an den Prozessor, da nun auch weiter entfernte Schatten berechnet werden müssen? Einen solchen Umstand kann man etwa bei Battlefield 5 und dessen Raytracing-Reflexionen feststellen. Steht man beispielsweise vor einem spiegelnden Fenster, müssen ja auch Objekte hinter der Kamera beziehungsweise dem Spieler berechnet werden, die im Normalfall gecullt werden würden (Anmerkung: Durch Culling wird vor dem eigentlichen Rendern bestimmt, welche Elemente für das Endergebnis nötig sind, unnötige werden zuvor, "culled", also "gekeult" oder "ausgesondert" bzw. entfernt, um Renderanweisungen, deren Berechnungszeit und damit Leistung zu sparen). Bei Battlefield 5 entsteht durch die Raytracing-Spiegelungen eine deutlich erhöhte CPU-Last, vermutlich auch aufgrund der vielen zusätzlich benötigten Draw-Calls. Ist das bei euren Raytracing-Schatten auch ein Faktor oder ist die im Vergleich zu Reflexionen verhältnismäßig simple Schattenberechnung kein größeres Problem?
Denis Ishmukhametov: Nun ja, Reflexionen sind natürlich im Generellen viel performance-kritischer. Bei Raytracing-Schatten muss ja im Grunde nur geprüft werden, ob ein Ray von einem Objekt verdeckt wird beziehungsweise ob er von einem Objekt unterbrochen wird. Und das war's. Das ist also fast wie eine binäre Berechnung: 0 oder 1, Verdeckung oder keine Verdeckung. Wenn man mehrere Rays hat oder eine temporale Berechnung über mehrere Frames vornimmt - also man nimmt alle Rays die von einem Objekt verdeckt werden und teilt sie durch die Anzahl Rays die verschossen wurden (Anmerkung: Gemeint ist damit spezifisch die Herangehensweise für einen diffusen "Soft-Shadow") - also was ich im Grunde sagen will ist, dass es deutlich einfacher ist, Schatten zu berechnen. Und es müssen auch viel weniger Daten im Speicher der GPU gespeichert werden als beispielsweise bei Reflexionen.
Bei Spiegelungen benötigt man nicht nur Daten für die Geometrie an sich, also all die Dreiecke in den für aktuelle Raytracing-Anwendungen typischen Bounding Volume Hierarchies (Anmerkung: Eine Art geordnete Strukturierung für geometrische Objekte im virtuellen Raum, um Raytracing zu ermöglichen und Berechnungen zu vereinfachen), aber man muss auch all die Texturen, die auf diesen Objekten genutzt werden, speichern und nebenbei auch noch die komplette Beleuchtungsinformation sowie spezifische Shader im Speicher ablegen. Und wenn man dann ein Objekt in einer Reflexion anzeigen möchte, muss man auch noch feststellen, ob dieses Objekt dann auch noch aus einem anderen reflektierenden Material besteht; also ob das Material Glas, Metal oder vielleicht glattes Holz oder etwas anderes darstellt. Dann muss man das Lighting nämlich eventuell nochmals evaluieren und nochmals Beleuchtung, Shading und Verschattung berechnen, jedenfalls wenn man will, dass ein in der Reflexion gespiegeltes, ebenfalls reflektierendes Objekt hübsch und glaubwürdig aussieht. Dazu kommen noch einige andere Faktoren.
➤ PCGH: Das klingt ziemlich anspruchsvoll.
Denis Ishmukhametov: Ja, die für Reflexionen benötigten Berechnungen sind viel, viel anspruchsvoller als jene für Schatten.
➤ PCGH: Also gehen wir einmal davon aus, dass die für Raytracing-Schatten potenziell erhöhten Berechnungen bezüglich CPU kaum ins Gewicht fallen sollten.
Denis Ishmukhametov: Ja.
Raytracing im Vergleich (4)
➤ PCGH: Wie schwierig ist es aktuell, Raytracing generell in ein Spiel zu integrieren und wie schwierig ist euer spezifischer Ansatz in World of Tanks? Wie ist das Ganze überhaupt via Software beziehungsweise Intels Embree-Middleware und auch unter Direct X 11 möglich? Unserem Verständnis zufolge bräuchte man eigentlich GPU-spezifische Instruktionen, die nicht oder nicht vollständig in Direct X 11 enthalten sind - wie funktioniert das also?
Denis Ishmukhametov: Hmm, also wenn wir erstmal ein wenig zurück treten und betrachten, was Raytracing aktuell eigentlich ist, also: Raytracing ist im Grunde nur ein Algorithmus, es ist ein Algorithmus, der berechnet, wo sich verschossene Rays und Dreiecke im virtuellen Raum schneiden - oder jede andere Art Geometrie die man verwendet. Also in Spielen zum Beispiel werden alle Objekte aus Polygonen und Dreiecken gerendert. Wir müssen also untersuchen, ob ein Ray eines dieser Dreiecke schneidet. Das müssen wir außerdem effizient berechnen; daher müssen wir diese Dreiecke in einer Art Beschleunigungsstruktur unterbringen, die wiederum eine schnellere Berechnung von dem Raytracing-Effekt selbst erlaubt. Man verhindert damit, dass man für jeden Ray sämtliche Geometrie, Millionen von Dreiecken iterieren muss. Deswegen braucht man eine hierarchische Struktur irgendeiner Art.
Bei Raytracing in Spielen - speziell in Spielen und Echtzeitgrafik - gibt es drei Hauptvorgänge: Der erste Arbeitsschritt ist es, diese Bounding Volume Hierarchies beziehungsweise die genutzte Beschleunigungsstruktur zu berechnen. Dabei wird im Grunde die gesamte Geometrie in eine spezielle Struktur...
➤ PCGH: Man kann sich das Ganze im Grunde wie ein virtuelles, dreidimensionales Gitter vorstellen, in dem die Geometrie untergebracht ist. Damit kann man erörtern, in welchem Teil des Gitters sich ein Polygon befindet und dadurch beim Prüfen der verschossenen Rays all die Polygone ausschließen, die nicht in Frage kommen, was die Berechnung vereinfacht - korrekt?
Denis Ishmukhametov: Ja, im Grunde schon. Das ist also der erste, wichtige Schritt beim Echtzeit-Raytracing. Der zweite Arbeitsschritt ist das Raytracing selbst. Wir verfolgen also unsere Rays und prüfen Schnittpunkte mit der Geometrie und berechnen dann, was immer wir wollen - ob es jetzt Schatten, Reflexionen oder etwas anderes ist. Der dritte Schritt ist das Denoising. Diesen Arbeitsschritt benötigt man, weil uns - selbst mit Hardware-Beschleunigung, das macht keinen Unterschied - nur eine limitierte Leistung und damit eine beschränkte Anzahl Rays zur Verfügung stehen. Wir können also nicht - wie beispielsweise bei CGI-Filmen - tausende Rays für jeden Pixel nutzen. Wir müssen uns auf einen, zwei oder vier - jedenfalls mit weniger als zehn - Rays pro Pixel beschränken.
➤ PCGH: Stattdessen wird mit der zeitlichen Komponente gearbeitet, um dieses Defizit durch zusätzliche, temporale Berechnungen zu ergänzen?
Denis Ishmukhametov: Ja, genau, man gewinnt diese Raytracing-Daten über die Zeit und vermischt sie, dazu verwendet man einen bestimmten Blur-Filter, der den Effekt dort weichzeichnet, wo es nötig ist und andere Stellen auslässt. In unserem Fall wollen wir beispielsweise nicht, dass die Kontaktschatten weichgezeichnet werden. Unser De-Noiser stellt also vor dem Weichzeichnen fest, ob es sich um einen harten Schatten - also einen Kontaktschatten - handelt, und dann wird keine Unschärfe aufgetragen. Handelt es sich um einen Soft-Schatten, wird - abhängig von seiner Weichheit - ein Screen-Space-Blur angewandt, bei sehr weichen Schatten auch mehrfach.
Raytracing im Vergleich (5)
Also, um das Ganze noch einmal zusammenzufassen: Es gibt beim Raytracing in Spielen drei Hauptarbeitsschritte: Die Erstellung der Beschleunigungs-Struktur, das Raytracing selbst und das De-Noising. Und im Grunde gilt für aktuelle, Raytracing beschleunigende Hardware - also beispielsweise die Grafikkarten, die über Einheiten für Hardware-beschleunigtes Raytracing verfügen -, dass man damit nur den zweiten Part beschleunigt. Das Raytracing selbst, also die Berechnung der Rays und wo sie sich mit der Geometrie schneiden, wird schneller, weil es eben via Hardware geschieht. Und das Übertragen der Daten in der Beschleunigungsstruktur während des Raytracing-Vorgangs ist ebenfalls schneller. Aber der erste und dritte Arbeitsschritt bleibt im Grunde bei jedem Ansatz gleich. Die Konstruktion der BVH (Anmerkung: Bounding Volume Hierarchy, also die erwähnte Beschleunigungsstruktur) kann dabei einfach durch Compute Shaders realisiert werden - oder im aktuellen Fall Cuda-Cores - und De-Noising wird ebenfalls über Compute Shaders beziehungsweise Cuda vorgenommen.
In unserem Spiel haben wir mit dem dritten Arbeitsschritt - also De-Noising - einen sehr ähnlichen Ansatz wie in einem Spiel mit Hardware-Raytracing. Das machen wir also im Prinzip genau gleich.
Der zweite Arbeitsschritt - das Raytracing - erfolgt bei uns via Compute Shaders oder, wie Nvidia sie nennt: Cuda-Cores. Dieser Schritt ist bei unserem Ansatz sehr stark optimiert, aber er wird ein wenig langsamer sein als die Hardware-beschleunigte Variante.
Und der erste Schritt, die Beschleunigungsstruktur - einige Spiele nutzen für solch einen Ansatz ebenfalls Compute Shaders - erfolgt bei uns via Intels Embree, im Großen und Ganzen. Das geschieht durch den Prozessor. Wir verlagern diesen Arbeitsschritt also auf die CPU - dabei nutzen wir mehrere Threads. Dieses Intel-Embree-Toolkit ist eine sehr stark optimierte Bibliothek, die für Offline-Raytracing (Anmerkung: Non-Realtime-Raytracing, also beispielsweise Animationsfilme) genutzt werden kann, aber für das Toolkit gibt es außerdem ein Modul, das effektiv eine BVH-Struktur berechnet, die sehr effizient und schnell ist und auch für Echtzeit-Raytracing genutzt werden kann. Und um noch einmal darauf hinzuweisen: Wenn die Berechnung dieser BVH-Struktur effizienter wird, dann wird dadurch auch das gesamte Raytracing schneller.
Raytracing im Vergleich (6)
➤ PCGH: Okay, interessant. Und für das De-Noising könnt ihr wahrscheinlich Teile der temporalen Berechnungen nutzen, die bereits für eure temporale Kantenglättung anfallen...
Denis Ishmukhametov: Ja, eine temporale Akkumulation plus das TAA obendrauf.
World of Tanks-Entwickler zur zukünftigen Entwicklung von Raytracing
➤ PCGH: Ja, das ergibt Sinn. Gut, soviel zu unseren technischen Fragen. Kommen wir zu den etwas Generelleren. Also, was denkt ihr: Wird es in Spielen der näheren Zukunft mehr Ansätze wie den euren geben, Ansätze die zumindest so ähnlich ausfallen oder wird es hauptsächlich Spiele mit Hardware-Support - oder zumindest aktuell genauer: Spiele geben, die Nvidias RTX-Technologie nutzen, was glaubt ihr? Werden auch andere Entwickler also einen nicht Hardware-spezifischen, nicht proprietären Ansatz nutzen? (Anmerkung: Nvidia nutzt mit den RTX-GPUs ebenfalls Microsofts DXR sowie entsprechende Vulkan-Erweiterungen für die Raytracing-Darstellung in Spielen, es handelt sich demnach auch bei Nvidias Ansatz nicht um eine Nvidia-proprietäre, für diese Karten exklusiv, sondern um eine prinzipiell allgemein nutzbare Lösung - mit ihren Raytracing-Grafikkarten steht Nvidia allerdings zum aktuellen Zeitpunkt exklusiv da, denn es mangelt aufseiten AMDs, Intels oder der Konsolen an einem ähnlichen, Hardware-basierten Angebot)
Denis Ishmukhametov, Bronislav Sviglo (lachen): Uff...
➤ PCGH (lacht): Sagt einfach, was ihr denkt...
Raytracing im Vergleich (7)
Bronislav Sviglo: Jaja, ich verstehe schon - und das ist eine gute Frage. Also: Wir glauben, dass die nächste Konsolengeneration über für Raytracing spezifische Hardware-Beschleunigung verfügen wird. Die wird aber nicht Nvidia-basiert ausfallen, es ist also kein RTX, denn es handelt sich bei der Konsolen-Hardware ja um AMD- oder AMD-basierte Custom-Render-Lösungen, jeweils für Sony und Microsoft. In näherer Zukunft werden wir wohl einen gesteigerten Nutzen von Microsoft- beziehungsweise DXR-Ansätzen sehen. Letzteres dient dabei als eine Art API, also ein Abstraktions-Layer über entweder einem Software- oder Hardware-Raytracing-Ansatz. Und wir Entwickler, nun, wir hätten gern eine solche API, welche einen darunterliegenden Raytracing-Ansatz gleich welcher Art abstrahiert.
➤ PCGH: Ihr hättet also gerne eine Schnittstelle, welche einen Abstraktions-Layer für jedweden Raytracing-Ansatz bietet, gleich ob es sich dabei um einen Software-Ansatz, RTX, Microsofts DXR oder einen anderen Custom-Hardware-Ansatz, beispielsweise für Sonys kommende Playstation handelt. Damit ihr nicht für jede Hardware eine spezielle Herangehensweise benötigt, richtig?
Jemand sollte eine API entwickeln... damit nicht wir Spiele-Entwickler die Verantwortung dafür tragen.
Bronislav Sviglo: Ja, dahin sollte es in Zukunft gehen: Jemand sollte eine API entwickeln, die über all den Ansätzen funktioniert und all diese Raytracing-Ansätze abstrahieren kann, damit nicht wir Spiele-Entwickler die Verantwortung dafür tragen, all die verschiedene Hard- und Software und diversen Raytracing-Ansätze zu unterstützen und den Entwicklern diese API dann zur Verfügung stellen.
➤ PCGH: Das ergibt Sinn, das würde der Verbreitung von Raytracing natürlich auch enorm entgegen kommen und es würde obendrein die Arbeit für euch Entwickler deutlich vereinfachen, wenn ihr nicht für jedes System einen eigenen, differenzierten und aufwendigen und damit kostspieligen Ansatz benötigt.
Bronislav Sviglo: Ja, was wir wollen, ist im Grunde das gleiche wie Direct X, Open GL oder Vulkan - also eine API, die über der (Raytracing-)Hardware liegt und sie für uns abstrahiert und es uns so vereinfacht, verschiedene Hardware zu nutzen. Frühere Versionen von Direct X und OpenGL haben uns beispielsweise nicht direkt die tatsächlich verbaute Hardware ansprechen lassen, sondern eine Art "Ideale Hardware", die nur stellvertretend für alles stand, was zum damaligen Zeitpunkt an Hardware genutzt wurde. Das hat sich allerdings über die Zeit verändert und heutzutage haben wir APIs wie Direct X 12, Vulkan oder Metal, die tatsächlich deutlich Hardware-näher arbeiten und uns spezifische Hardware-Funktionen besser nutzen lassen - aber diese APIs sind wiederum auch nicht so "Close-to-the-Metal", dass beispielsweise unsere Programmierer oder auch Artists jedes Mal die genaue, spezifische Hardware vor Augen haben müssen, wenn wir einen Algorithmus schreiben.
In einigen Fällen - besonders bei den Konsolen-, sollten Entwickler aber der Hardware besondere Aufmerksamkeit zukommen lassen und auf kleine Besonderheiten der jeweilige Hardware eingehen, beispielsweise bei Konsolen im Speziellen die Register Pressure (Anmerkung: Register Allocation, also Registerzuweisung, eine Optimierung des Compilers, um möglichst viele Variablen in den meist besonders schnellen, aber beschränkten Register eines Prozessors unterzubringen; gilt für CPUs, aber auch GPUs, beispielsweise in Form von Shader-Compilern und Texture-Registern). Diese Probleme sollten von Entwicklern für die jeweilige Hardware spezifisch gelöst werden. Allein dafür benötigen wir und andere Entwickler allerdings schon einen beträchtlichen Teil der Entwicklungszeit, nur um diesen Aspekt der Optimierung vorzunehmen.
Wir, als PC-Entwickler - nicht unbedingt als Firma im Gesamten, aber wir als Abteilung, also als Sektion innerhalb des World-of-Tanks-Entwicklers - hätten gern eine Form von Abstraktions-Layer über der jeweiligen Hardware.
➤ PCGH: Damit ihr nicht für jede GPU, CPU und Kombination davon spezifische Anpassungen machen müsst. Nur ein wenig mehr Abstraktion, wenn wir das richtig verstehen... also eine Möglichkeit, unterschiedliche PC-Hardware mit den gleichen Tools anzusprechen.
Bronislav Sviglo: Ja.
Raytracing im Vergleich (8)
➤ PCGH: Interessant. Wie glaubt ihr wird sich Raytracing in Zukunft entwickeln? Welche Aspekte in Spielen werden eine Verbesserung durch Raytracing erfahren? Wir haben bislang Schatten-Berechnungen, Globale Beleuchtung, Ambient Occlusion, Reflexionen und Refraktionen gesehen, aber wahrscheinlich gibt es ja noch mehr, was man mit der Technologie anfangen könnte - was glaubt ihr also, wird sich an zukünftiger Grafik durch Raytracing ändern? Und wie wird Raytracing in Spielen Einfluss auf den Design-Aspekt haben - man kann ja mit Raytracing Dinge darstellen, die bislang nicht oder nur sehr schwierig möglich waren, Reflexionen etwa sind ein gutes Beispiel. Wird also beispielsweise die Möglichkeit, durch Raytracing echte Spiegelungen darzustellen, Auswirkungen auf des Game-Design der Zukunft haben - auf die nähere Zukunft beschränkt, also nicht etwa in 20 Jahren oder so -, was denkt ihr?
Denis Ishmukhametov (lacht): Puh, na gut. Nun, was wir im Moment feststellen, ist das Raytracing-Spiele sich aktuell zumeist auf einen Aspekt der Beleuchtung beschränken - das liegt an der momentan noch sehr verhaltenen Performance, die aktuell selbst mit Hardware-Raytracing zur Verfügung steht, man beschränkt sich also auf einen spezifischen Aspekt, wie ihr bereits erwähnt habt. Als Entwickler kann man das aktuell zur Verfügung stehende Raytracing-Budget also entweder für Schatten, Reflexionen oder Globale Beleuchtung und Umgebungsverdeckung nutzen. Aber im Gesamten sind diese Effekte allesamt Teile eines einzelnen Algorithmus, der Path-Tracing genannt wird. Das Ultimo bei Raytracing ist also Path-Tracing - gleich ob bei Spielen, Computergrafik, Filmen oder animierten 3D-Cartoons, und ultimativ gesehen werden wir also zu Path-Tracing-Grafik wechseln. Die Leistung der aktuellen Hardware reicht dafür noch nicht, aber in Zukunft werden wir wohl alle zu Path-Tracing übergehen. Das ist tatsächlich ein langgehegter Wunsch aller Menschen, die sich mit Computergrafik beschäftigen, die träumten schon immer davon, dass alles mittels Path-Tracing dargestellt werden kann. Und damit, mit diesem Algorithmus, bekommen wir automatisch weiche, realistische Soft-Shadows, korrekte Reflexionen und Refraktionen, Ambient Occlusion und Globale Beleuchtung und darüber hinaus auch noch andere optische Effekte, darunter beispielsweise auch eine akkurate, realitätsbezogene Bewegungs- oder Tiefenschärfe. Dann müsste man all diese Effekte auch nicht mehr mit Post-Processing faken.
Raytracing im Vergleich (9)
➤ PCGH: Das wäre also die volle Packung, sozusagen.
Denis Ishmukhametov: Ja, allerdings steht dabei natürlich auch zu beachten, dass mit Leistungssteigerungen bei Grafikkarten und Hardware im Generellen, unglücklicherweise auch die Spiel-Designer einen Vorteil haben wollen (lacht). Die wünschen sich dann größere Welten und inhaltsreichere Games, mehr Features etc. und verballern dafür einen Großteil der neu hinzugekommenen Leistung. Das wiederum bremst den Fortschritt beim Ray- oder Path-Tracing natürlich in gewissen Maßen ein. Hätten wir beispielsweise ein Spiel mit sehr simpler Geometrie, kämen wir wohl schon weiter und...
➤ PCGH: Quake 2 etwa hat einen Path-Tracing-Ansatz erhalten, der schon mit heutiger Hardware einigermaßen funktioniert.
Denis Ishmukhametov: Gutes Beispiel, ja. Also in diesem Spiel ist Path-Tracing schon möglich, weil die Geometrie super-simpel ausfällt und auch andere Elemente gegenüber heutigen Spielen extrem vereinfacht sind. Deswegen funktioniert Path-Tracing dort schon. Aber in modernen Spielen wäre eine Umsetzung sehr, sehr schwierig. Und selbst wenn man es versuchen würde, hätte man aktuell gleich mehrere schwere Hardware-Limits. Obendrein hätte man aktuell extrem mit Noise zu kämpfen, weil man momentan nur eine sehr beschränkte Anzahl Rays verschießen kann. Aber wir hoffen, dass dies in der Zukunft möglich wird - allerdings wohl nicht in der näheren Zukunft, aber...
➤ PCGH: Ja, das wird wohl eher in ein bis zwei Konsolen-Generationen realistisch sein.
Denis Ishmukhametov: Ja, in vielleicht 5 bis 10 Jahren könnten wir wohl einen Path-Tracing-Ansatz in dann zeitgenössischen Spielen samt guter Bildqualität realisieren.
Raytracing im Vergleich (10)
➤ PCGH: Ja, das klingt auch in unseren Ohren potenziell machbar. Um in diesem Bezug noch einmal auf euer eigenes Spiel zurückzukommen: Plant ihr als World-of-Tanks-Entwickler damit, in Zukunft weitere Raytracing-Effekte zu ergänzen, wenn die Hardware-Basis stärker geworden ist, beziehungsweise sich mehr etwas potentere GPUs im Umlauf befinden - oder wenn ihr vielleicht einen Weg findet, euren Raytracing-Ansatz noch weiter zu optimieren? Würdet ihr also in Betracht ziehen, zusätzliche respektive gewonnene Leistung wiederum in eine verbesserte Raytracing-Darstellung investieren?
Denis Ishmukhametov: Naja, seht ihr, das kommt ein wenig darauf an: Also Reflexionen zum Beispiel sind in World of Tanks nicht besonders nützlich, denn wir haben zumeist große, offene Karten mit natürlichen Umgebungen. Wir nutzen beispielsweise kein "cleanes", hochglänzendes Sci-Fi-Szenario, also mit glänzend-metallenen, spiegelnden Raumschiff-Innereien oder so. Bei unseren Umgebungen wären Spiegelungen visuell nicht so auffällig oder nützlich, der Performance-Drop wäre dagegen allerdings sehr, sehr auffällig. Das gleiche gälte für eine Raytracing-Ambient-Occlusion, was auch eine sehr anspruchsvolle Berechnung wäre, aber auf visueller Ebene nur kleine Verbesserungen mit sich brächte. Bei der Globalen Beleuchtung gibt es aktuell Algorithmen, auch dynamische, die eine sehr ähnliche optische Qualität der aktuell möglichen, noch recht Noise-behafteten oder anderwärtig eingeschränkten Raytracing-GIs erbringen, aber wesentlich schneller zu berechnen sind und somit gleich in mehreren Aspekten günstiger ausfallen. Aber ich denke, in der Zukunft..., wenn wir einen Abstraktions-Layer bekämen, wie ihn Bronislav erwähnte, würde uns das sehr helfen, neue Raytracing-Effekte einfach und bequem zu ergänzen und dabei nicht nur Software, sondern sämtliche gängigen Hardware-Konstellationen zu unterstützen. Also beispielsweise Microsofts DXR, wenn es denn mal für alle GPU-Vendors zur Verfügung steht und zwar in einem einfach zu nutzenden Ansatz, der nicht voraussetzt, dass wir alle Anpassungen und spezifische Hardware-Optimierungen von Hand vornehmen müssen. Das würde uns bei der fortschreitenden Entwicklung von Raytracing in unserem Spiel sehr zugute kommen.
➤ PCGH: Danke für die Ausführung. Das waren dann im Großen und Ganzen all unsere aktuellen Fragen. Vielen Dank dafür, dass ihr uns so geduldig Rede und Antwort gestanden habt. Es war ein sehr interessantes Gespräch. Wir warten dann mal gespannt darauf, euren Raytracing-Ansatz in Kürze in Aktion zu erleben.
Raytracing im Vergleich (11)
Zum Abschluss des Interviews bleiben wir gespannt zurück. Einige Punkte unserer Unterhaltung mit den Entwicklern haben wir als sehr interessant empfunden, spannend waren auch die Antworten im Ausblick auf zukünftige Spiele. Wir werden uns das Ergebnis der Bemühungen in Kürze zu Gemüte führen und bleiben darüber hinaus gespannt, wie sich Raytracing in näherer Zukunft entwickeln wird und welche Ansätze wir in Bezug auf die Technologie noch zu Gesicht bekommen werden. Wirklich spannend wird es wohl werden, wenn auch die Konsolen Raytracing-Fähigkeiten erhalten, denn zu diesem Zeitpunkt wird Raytracing wirklich im Mainstream ankommen - was meinen Sie? Was halten Sie von Raytracing zum aktuellen Zeitpunkt, der non-proprietären Herangehensweise in World of Tanks und den Ausblicken der Entwickler im Interview? Teilen Sie Ihre Meinung mit uns in unserem Forum!



In FHD alles auf "Ultra" lande ich bei ~10k Punkten mit 2,9GB Vram Auslastung.
In FHD auf "Mittel" bis auf Raytracing und Antialiasing (beide weiterhin auf "Ultra") ~15k Punkte mit 1,9GB Vram Auslastung.
ich könnte echt ne neue GPU gebrauchen
P.S. wie viel Vram belegt der Benchmark denn wenn er mehr zur Verfügung hat?
Dennoch ist die Performance mehr als genug so. Mit dem RAM holt man halt viel raus.
[Ins Forum, um diesen Inhalt zu sehen]
~34°C CPU Temp, AVG Verbrauch von ~18W CPU+SoC, GPU 120W AVG Verbrauch.
weil meine rx5700 macht 63k und denke deine GTX1080 sollte deutlich höher sein bei niedriger Auflösung.