Raytracing-Technik erklärt: wie Nvidias Turing-Architektur neue Standard in der Bildqualität definiert

Raytracing ist eine verbesserte Render-Technik im Vergleich zur klassischen Rasterization, die wir seit den 1990er in 3D-Spielen einsetzen, und quasi die Königsdisziplin unter den Computerspiele-Entwicklern. Das Ziel ist einfach: die Spielwelten sollen noch realistischer und naturgetreuer werden. Der Name Raytracing besteht aus den Teilen Ray (= Strahl) und Trace (= Verfolgung) und verdeutlicht, dass vor allem Lichtquellen und deren Auswirkungen (Lichtstrahlen) auf eine Szene im Fokus dieser Technik steht. Raytracing gehört wahrscheinlich zu einem der komplexesten und rechenintensivsten Kapiteln im Bereich der 3D-Technik, erhöht wiederum den Realitätsgrad enorm. Und das ist im Sinne der vielen Computerspieler dort draußen: PC-Games sollen der Realität möglichst nah sein.

Vergleich: mit und ohne Raytracing
Vergleich: mit und ohne Raytracing (Quelle: Screenshot Battlefield V)

Raytracing spielt dann seine Stärken aus, wenn es um Lichtberechnungen, Schatten oder Spiegelungen geht. Für unser Auge ist es eine Selbstverständlichkeit, dass es reflektierende (bspw. Wasser, Lack, Spiegel) und absorbierende Oberflächen (bspw. Stoff) gibt. In der Fotografie lernen wir, wie wichtig die Lichtstimmung für ein gelungenes Foto ist und dass bspw. der Einsatz eines direkten Blitzes in Innenräumen diese ruinieren kann. Stattdessen verwendet man besser eine indirekte Lichtquelle (was hier schön beschrieben wird). Und die Outdoor-Freunde unter uns orientieren sich anhand ihres Schattens, denn der Stand der Sonne verrät uns die Himmelrichtung, je nachdem wie unser Schatten geworfen wird.

Hinter allen Beispielen verbirgt sich dasselbe Prinzip: es gibt Lichtquellen, die daraus resultierenden Lichtstrahlen fliegen durch den Raum, treffen auf Hindernisse, werden absorbiert oder reflektiert, vermischen sich mit anderen Lichtstrahlen und sorgen letztendlich für die Welt, wie wir sie kennen.

Nvidia beschreibt Raytracing wie folgt:

"The easiest way to think of ray tracing is to look around you, right now. The objects you’re seeing are illuminated by beams of light. Now turn that around and follow the path of those beams backwards from your eye to the objects that light interacts with. That’s ray tracing.

Historically, though, computer hardware hasn’t been fast enough to use these techniques in real time, such as in video games. Moviemakers can take as long as they like to render a single frame, so they do it offline in render farms. Video games have only a fraction of a second. As a result, most real-time graphics rely on another technique, rasterization.
"

Quelle: Nvidia Developer

Bildquelle: Screenshots aus diesem Youtube-Video, hochgeladen von Nvidia

Das Feuer und die Person im Hintergrund sind nicht Teil der aktiven Szene, spiegeln sich trotzdem im Lack des Autos...
...oder in der Iris des menschlichen Auges. Ohne Raytracing fehlen solche natürlichen Effekte.
Der Feuerball der Explosion ist eine indirekte Lichtquelle, die mittels Raytracing die Uniform des Soldaten primär von einer Seite erhellt.
Besonders schön lassen sich Spiegelungen auf der Wasseroberfläche darstellen. Mit klassischer Rasterisierung müsste dies aufwändig berechnet werden.

Unterschied zwischen Raytracing und klassischer Rasterisierung

Um die Vorzüge von Raytracing zu verdeutlichen, müssen wir kurz in die technische Tiefe gehen und die Funktionsweise der klassischen Rasterisierung beschreiben. Wie gesagt sind beides Render-Techniken, um die 3-dimensionale Welt wie wir sie kennen auf ein 2-dimensionales Raster, sprich den Monitor, zu zeichnen. Jeder von uns kennt dieses Problem, wenn er einen Gegenstand auf ein Blatt Papier zeichnet. Es ist gar nicht so einfach, ein 3D-Objekt auf das 2D-Raster gedanklich zu übersetzen. Aber irgendwie bekommen wir es dann hin, dass wir bei einem Würfel nur 9 der 12 Kanten zeichnen, da 3 Kanten aus Sicht des Betrachters verdeckt sind.

Rasterisierung: 3D Objekte auf 2D Raster
Gar nicht so einfach: die 3D-Welt in 2D umzurechnen. Nicht alle Kanten eines Würfels (3 fehlen) sind zu sehen,
die Raumtiefe wird mittels schräger Linien dargestellt. Bei der Rasterisierung werden nicht sichtbare Objekte
(bspw. Objekte hinter einem Würfel) vollständig ignoriert. Das spart Rechenleistung.

Bei der Rasterisierung wird alles, was nicht sichtbar ist, auch nicht berechnet. Das spart zwar Rechenleistung, aber viele indirekte Einflüsse wie Licht oder Hindernisse werden erst einmal nicht berücksichtigt. Man stelle sich folgende Szene eines Ego-Shooters vor: man betritt einen dunklen Raum und dreht sich mit dem Rücken zum eingeschalteten Fernseher. Bei der klassischen Rasterisierung ist der Fernseher nicht im Blickwinkel und somit nicht Teil der Szene. Der Computerspiele-Entwickler muss jetzt tricksen und das Licht des Fernsehers simulieren. Bei Raytracing wird der Fernseher als Lichtquelle definiert und den Raum erleuchten. Nähert sich nun eine weitere Person von hinten, zeichnet sich nun dessen Schatten an die gegenüberliegende Wand

Warum kommt Raytracing erst jetzt

Der Grund hierfür ist einfach: die Hardware, sprich die Grafikkarte, war und ist hierfür einfach zu schwach. Oder anders gesagt: Raytracing ist so rechenintensiv, dass selbst jahrzehntelange Entwicklung in der Computertechnik nicht ausgereicht hat.

Wir aber alle kennen die Raytracing-Effekte aus Kinofilmen, wo Raytracing bereits seit langer Zeit eingesetzt wird. Die Filmemacher haben aber einen unschlagbaren Vorteil, denn die zu Szenen müssen nicht in Echtzeit berechnet werden. Es ist letztendlich egal, ob eine gesamte Serverfarm über Nacht die Animationen berechnet. Das ist bei Computerspielen anders: hier müssen flüssige 60 - 120 Bilder pro Sekunde auf einem Home-PC berechnet werden.

Hardware-Beschleunigung: Nvidia Turing, Geforce RTX, RT-Cores, Tensor-Cores

Nvidia pusht das Thema Raytracing enorm und versucht sich dadurch ein Alleinstellungsmerkmal zu setzen. Die 2018 eingeführten Geforce-Modelle heißen nun nicht mehr GTX, sondern RTX. Das "R" steht selbstverständlich für Raytracing. Selbst die neue Mikroarchitektur Turing der neuen Serie hat einen Bezug zu Raytracing. Sie ist nach dem nach dem britischen Mathematiker Alan Turing benannt.

Begrifflichkeiten

Turing: Name der neuen Nvidia Mikroarchitektur der Geforce RTX 2000 Serie
RT-Cores: spezielle Recheneinheiten für Raytracing
Tensor-Cores: spezielle Recheneinheiten für künstliche Intelligenz

Die neuen Modelle wie die Geforce RTX 2080, 2070 und 2060 besitzen zusätzlich zu der bekannten Architektur speziell auf Raytracing optimierte RT-Cores. Das bedeutet, dass der Grafikkarte eine weitere Spezialfähigkeit verliehen wurde. Moderne Grafikkarten verwandeln sich somit immer weiter in hochgezüchtete Spezialisten.

Die neuen Tensor-Cores sind für die Berechnung von Künstlicher Intelligenz eingeführt werden. Sie haben keinen direkten Bezug zur Raytracing-Technik, können diese aber sinnvoll unterstützen. Sie werden für Reduzieren des Bildrauschens eingesetzt, was entsteht, wenn zu wenige Lichtstrahlen für einen Pixel zur Verfügung stehen. Außerdem berechnen diese das Kantenglättungsverfahren Deep Learning Super Sampling (DLSS).

Am Beispiel der RTX 2080 wird der enorme Leistungshunger von Raytracing deutlich. Grafikkarten in der Preisklasse sind eigentlich für 4K-Auflösungen konzipiert. Durch aktiviertes Raytracing werden aber deutlich niedrigere Auflösungen empfohlen, um spielbare Frameraten zu erreichen. Jeder muss sich selbst die Frage stellen, ob Raytracing ein Gewinn ist, wenn stattdessen die Auflösung auf FullHD zurückgestuft werden muss.

Hybrid-Lösung und mehrere Raytracing-Abstufungen

Selbst die auf Raytracing spezialisierten Nvidia-Turing-Grafikkarten wie die Geforce RTX 2080, die mit einem Preis bis zu 1000 Euro auch nicht gerade billig sind, sind nicht leistungsstark genug um Computerspiele vollständig in Raytracing zu rendern. Daher fährt man eine Hybrid-Lösung. In der Praxis werden nur bestimmte Effekte (Wasserspiegelungen, Explosionen usw.) via Raytracing gerendert, die restliche Szene via der klassischen Rasterisierung.

Auch Raytracing ist nicht gleich Raytracing. Auch hier gibt es verschiedene Abstufungen, die unterschiedlich leistungshungrig sind, was in diesem Video sehr schön verdeutlicht wird:

DirectX 12 - DXR

Die State-of-The-Art Spiele-API ist Microsofts DirectX und hier stellt sich die Frage, ob Raytracing unterstützt wird. Erst mit dem Windows 10 Update 1809 im Oktober 2018 wurde die Raytracing-API DXR in DirectX-12 integriert und ist somit zum heutigen Stand eine brandneue Technik. Auf der Developer-Seite von Microsoft wird explizit darauf hingewiesen, dass die Raytracing-API DXR für alle Hersteller konzipiert wurde und nicht ausschließlich für Nvidia.

Bietet AMD auch Raytracing an?

AMD arbeitet selbst an einer Software-Lösung, die unter dem Namen Radeon Rays publiziert wird, bietet aber zum heutigen Stand (März 2019) noch keine Hardware-Beschleuniger für Raytracing an. AMD-Anhänger müssen sich also noch ein wenig gedulden, bis RT-Cores auch in AMD-GPUs Einzug erhalten.

Grundsätzlich lässt sich Raytracing auch mit "normalen" Shadern berechnen, die Leistung ist letztendlich aber zu schwach.

Lohnt sich Raytracing?

Okay, wir Hardware-Freaks sind fasziniert von neuen Techniken und daher rückt die Frage nach der Sinnhaftigkeit oftmals in den Hintergrund. Trotzdem möchten wir der Frage nachgehen, ob Raytracing zum heutigen Stand (03/2019) sinnvoll ist bzw. ob wir den Kauf einer teuren Raytracing-Grafikkarte wie die Geforce RTX 2080 empfehlen können. Hier eine kurze Pro/Contra Liste:

  • Szenen  wirken realistischer
  • Raytracing ist die Königsdisziplin
  • Grafikkarten sind immer noch zu schwach
  • Aktuelle 3D-Spiele wie Battlefield 5 nutzen nur teilweise Raytracing
  • Raytracing geht auf Kosten der Auflösung, welche heruntergeschraubt werden muss
  • Grafikkarten für Raytracing sind sehr teuer
  • 3D-Grafik unterscheidet sich oftmals kaum zum klassischen Rasterization

Raytracing ist die Königsdisziplin und jemand, der stets nach dem Besten strebt, sehnt sich danach. Aber schaut man sich im Netz einige Vergleichsvideos an, wird man ganz schnell auf dem Boden der Tatsachen zurückgeholt und muss feststellen, dass sich mit klassischer Rasterisierung ebenfalls sehr realistische Effekte darstellen lassen. Wir wissen alle, dass sich in den DirectX-Versionen 5 bis 12 enorm viel getan hat.

In diesem Beispiel-Video wird in Battlefield V zwischen RTX On und Off gewechselt. Man muss schon sehr genau hinschauen, um die Unterschiede festzustellen.

Fazit

Raytracing ist die Zukunft und Nvidia forciert diese Technik enorm. Leider ist die Technik auch heutzutage noch nicht performant genug, um richtiges Raytracing in Echtzeit berechnen zu können. Der Kompromiss in Form einer Hybridlösung aus Raytracing und klassischer Rasterisierung führt dazu, dass aktuelle 3D-Spiele nur vereinzelnd Raytracing-Effekte beinhalten. Oftmals sind die Unterschiede kaum zu erkennen. Der Kauf einer Grafikkarte, die fast 1000 Euro kostet, ist nicht zu empfehlen, wenn man diese allein für Raytracing erwirbt.

Wir müssen uns noch ein wenig gedulden, bis Nvidia die Performance nochmals steigert, AMD ebenfalls nachzieht und die Spiele-Hersteller die neuen Grafikkarten auch vollständig unterstützen.

  • Raytracing ist eine Rendertechnik (3D -> 2D), die bessere Effekte vor allem bei Lichtstrahlen, Spiegelungen oder Schatten mit sich bringt.
  • "löst" die klassische Rasterization ab, die es seit 1990 gibt
  • Ray = Strahl, Trace = Verfolgung
  • Erfordet extrem hohe Rechenleistung
  • Geforce RTX 2080, 2070, 2060 besitzen spezielle Raytracing Cores. AMD Grafikkarten noch nicht.
  • DirectX 12 unterstützt mit Windows 10 Update 1809 Raytracing
  • Aktuelle Spiele verwenden Kombination aus klassischer Rasterisierung und Raytracing, da zu leistungshungrig. Selbst das Topmodell RTX 2080 kommt in die Knie.

Quellen: