Raytracing – die nächste Grafikrevolution?

Raytracing – die nächste Grafikrevolution?

Kevin Hofer
Zürich, am 21.08.2018
Nvidia selbst nennt es den grössten Grafiksprung seit Einführung der CUDA-Architektur: Raytracing. Die neue RTX-Grafikkartenserie des Chipherstellers soll erstmals Echtzeit-Raytracing für Otto-Normal-Verbraucher ermöglichen. Was steckt hinter dem schönklingenden Begriff Raytracing und was bedeutet das für dich als Gamer?

Nachdem Nvidia vor kurzem die neue Grafikkarten-Serie für Workstations basierend auf der Turing-Technologie vorgestellt hat, sind nun auch die Consumer-Karten dran. Nvidia verzichtet bei den Modellen 2070 und 2080 auf die Bezeichnung GTX und setzt auf RTX. Mit der Turing-Plattform soll Echtzeit-Raytracing endlich möglich werden, das bisher zu rechenintensiv war. Die neuen RTX-Modelle verbinden Raytracing und Rasterization indem sie CUDA-Cores und neu Raytracing-Cores auf die Karten packen.

Raytracing erzeugt realistische Lichteffekte. Damit sollen Games noch fotorealistischer werden. Microsoft hat eine neue DirectX Raytracing (DXR) API entwickelt und Epic Games wird den Unreal Engine-Entwicklern noch in diesem Jahr Echtzeit Raytracing zur Verfügung stellen. Alles scheint für die neue Grafikrevolution bereit zu sein.

Woher kommt Raytracing?

Raytracing ist alles andere als neu. Der grundlegende Algorithmus wurde bereits 1979 von John Turner Whitted geschrieben. Es dauerte dann einige Zeit, bis du mit Raytracing gerenderte Bilder bestaunen konntest, da es enorm viel Rechenleistung erfordert. Bei einigen Sequenzen von «Shrek» kam die Technik zum Einsatz. Am ehesten aufgefallen dürfte es dir bei «Cars» von 2006 sein. Aber auch hier wurde die Technologie nur sparsam eingesetzt, da das Rendern einzelner Bilder enorm viel Zeit benötigte. Nvidia hat sich 2008 dazu bekannt, an Raytracing fürs Gaming zu arbeiten. Es hat zehn Jahre gedauert, bis die ersten Raytracing fähigen Karten veröffentlicht werden. Immerhin unterstützen mit «Shadow of the Tomb Raider», «Battlefield V», «We Happy Few», «Hitman 2», «Final Fantasy XV», «PlayerUnknown's Battlegrounds», «Remanant from the Ashes» und «Dauntless» einige vielversprechende Titel Raytracing.

Wodurch unterscheidet sich Raytracing von Rasterization?

Raytracing zeichnet sich durch die realistische Modellierung einer physischen Umgebung, erfordert aber eine hohe Rechenleistung. Die Rasterung hingegen ist schneller und damit lassen sich viele verschiedene Algorithmen kombinieren. Die Ergebnisse sehen aber unter Umständen nicht so realistisch aus wie mit Raytracing.

Links: Rasterization; Rechts: Raytracing
Links: Rasterization; Rechts: Raytracing
Quelle: Screenshot aus «Raytracing in Industry» von Hugo Pacheco

Rasterization (Rasterung von Polygonen)

Eine 3D-Szene besteht aus mehreren Elementen: 3D-Modelle aus mit Texturen und Farben überzogenen Dreiecken (Polygonen), Licht, das die Objekte beleuchtet und dem Sichtpunkt, von dem aus die Szene betrachtet wird. Im Wesentlichen wird bei der Rastergrafik vom Sichtpunkt aus ein Pixelraster hergestellt. Für jedes Dreieck in der Szene wird bei der Rastergrafik bestimmt, ob das Dreieck ein Pixel überlappt. Ist dies der Fall, wird die Farbe des Dreiecks auf das Pixel angewendet. Die Rasterisierungs-Engine arbeitet dabei von den entferntesten Dreiecken aus und rückt näher an die Kamera heran. Wenn ein Dreieck ein anderes verdeckt, wird das Pixel zuerst durch das hintere Dreieck, dann durch das davor liegende gefärbt.

Weitere Algorithmen wie Shading oder Shadowmapping kommen dazu, um die endgültige Farbe eines Pixels zu erzeugen und dieses realer aussehen zu lassen.

Die Rasterung von Polygonen hat ihre Grenzen. Ein ausserhalb des Sichtfeld befindliches Objekt wird beispielsweise nicht berücksichtigt. Dieses Objekt könnte immer noch einen Schatten innerhalb der Szene werfen oder anders sichtbar sein. Einige dieser Effekte können mit zusätzlichen Algorithmen wie Shadowmapping erzeugt werden. Szenen werden aber nie so wie die Realität aussehen.

Das liegt daran, dass Rasterization nicht so funktioniert, wie wir sehen. Raytracing hingegen guckt bei der Natur ab.

Raytracing

Raytracing funktioniert genau umgekehrt wie wir sehen. Beim Sehen empfangen unsere Augen die Lichtstrahlen von Lichtquellen, die von den verschiedenen Objekten, von denen wir umgeben sind, reflektiert werden.

Beim Raytracing wirft die Rendering-Engine einen Lichtstrahl vom Sichtpunkt auf jedes Pixel. Der Sichtpunkt ist deine Perspektive auf das zweidimensionale Bild. Der Strahl dehnt sich in einer Halbgeraden aus, bis er ein dreidimensionales Element des zu rendernden Bilds schneidet. Dieser Schnittpunkt wird verwendet, um die Farbe des Pixels zu bestimmen.

Genaugenommen handelt es sich beim Raytracing-Rendering also um sogenanntes Backward Raytracing, da die Lichtstrahlen vom Sichtpunkt zu ihrer Quelle zurückverfolgt werden. Der ursprüngliche Algorithmus von Whitted basiert übrigens auf Forward Raytracing. Dieser ist für Renderaufgaben nicht geeignet, da zu viele unnötige Berechnungen durchgeführt würden.

Die Bestimmung der Farbe eines Pixels allein ist aber nicht ausreichend, um ein realistisches Rendering zu erreichen. Dazu muss auch die Beleuchtung des Pixels bestimmt werden. Das geschieht durch Sekundärstrahlen (im Gegensatz zu den Primärstrahlen, die die Sichtbarkeit der verschiedenen Objekte der Szene bestimmen). Um die Lichteffekte einer Szene zu berechnen, werden die Sekundärstrahlen auf die verschiedenen Lichtquellen abgegeben. Werden diese Strahlen durch ein Objekt blockiert, so befindet sich das betreffende Objekt im Schatten, den die betrachtete Lichtquelle wirft. Die Summe aller Sekundärstrahlen, die eine Lichtquelle erreichen, bestimmt die Lichtmenge, die auf ein Szenenelement fällt.

keine Informationen über dieses Bild verfügbar

Es geht aber noch weiter. Um eine noch realistischere Darstellung zu erreichen, müssen Reflexion und Brechung berücksichtigt werden. Das heisst; die Menge an Licht, die beim Auftreffen reflektiert wird, und die Menge an Licht, die das Material durchdringt. Auch hier werden Strahlen ausgesendet, um die endgültige Farbe des Pixels zu bestimmen.

Zusammengefasst werden beim Raytracing verschieden Typen von Lichtstrahlen eingesetzt. Die Primärstrahlen bestimmen die Sichtbarkeit. Die Sekundärstrahlen bestehen aus Schatten-, Reflexion- und Refraktionsstrahlen und dienen als Beleuchtungsmodell.

Wenn dir das Ganze etwas zu theoretisch war, kann ich dir dieses Tutorial empfehlen. In diesem wird dir in Videos zunächst die Theorie erklärt und dann kannst du das Gelernte üben.

Vorteile von Raytracing

Wie bereits erwähnt, lassen sich auch mit Rastergrafik relativ realistische Lichteffekte erzeugen. Mit Raytracing werden Reflexionen aber perfekt verwaltet, ohne komplizierte zusätzliche Algorithmen. Alles wird direkt vom Rendering-Algorithmus verarbeitet. Dasselbe gilt für Interreflexion, wie z.B. die Reflexion eines Seitenspiegels an der Karosserie eine Autos. Durch Rasterung ist dieser Effekt nur sehr schwer reproduzierbar.

Transparenzeffekte sind ein weiterer Vorteil von Raytracing. Der korrekte Umgang mit Transparenz ist mit Rastern äusserst schwierig, da die Berechnung der Transparenz von der Rendering-Reihenfolge abhängt. Um gute Ergebnisse zu erzielen, müssen transparente Polygone vor der Berechnung des Renderings vom entferntesten von der Kamera zum nahegelegensten sortiert werden.

In der Praxis wäre das aber viel zu rechenintensiv und Transparenzfehler sind immer noch möglich, da die Sortierung nach Polygonen und nicht nach Pixeln erfolgt. Das Raytracing kann Transparenzeffekte elegant verwalten.

Hinzu kommt die Berechnung von Schatten. Beim Rastern wird unter anderem auf Shadowmapping gesetzt. Dieses benötigt aber viel Speicherplatz und Aliasing ist ein Problem. Raytracing löst das ohne zusätzlichen Algorithmus.

Grafikrevolution oder Grafikevolution?

Seien wir ehrlich: Nvidia hat nicht ganz unrecht zu behaupten, dass Raytracing die grösste Grafikrevolution seit der CUDA-Architektur sein könnte. Klar, Spiele sehen dank verbesserten Shadern, 4K-Auflösung und Co. immer besser aus. Aber wenn wir uns anschauen, dass heute noch Benchmarks mit Crysis – immerhin bereits 2007 erschienen – gemacht werden, wird schnell klar: Eine wirkliche Grafikrevolution durften wir in den letzten zehn bis zwölf Jahren nicht mehr erleben. Ob die Konsolen dafür die Schuld tragen oder nicht sei dahingestellt. Fakt ist, dass für PC-Gamer endlich wieder etwas in Sachen Grafik gehen muss.

Und dieses Etwas könnte tatsächlich Raytracing sein. Die ersten Trailer zu Raytracing-Games sehen toll aus. Ich wähne mich in einem Animationsfilm, den ich selbst steuern kann. Aber sieh dir die Demos am besten selbst an.

Wie eingangs erwähnt setzen die RTX-Karten auf eine Kombination aus Raytracing und Rasterization. Bei den drei Demos wurde tatsächlich nicht ausschliesslich auf Raytracing für das Rendern von Lichteffekten gesetzt. Schaust du dir nämlich das Video zu Battlefield V etwas genauer an, siehst du ab etwa zwanzig Sekunden einen gelben Tramwagen im Hintergrund. Bei diesem sind keine Lichteffekte zu sehen, obwohl auch diese Oberfläche die Explosion links davon spiegeln müsste. Diese Kombination aus den zwei Render-Technologien nennt Nvidia Hybrid-Rendering.

Trotzdem sehen die Demos überwältigend aus und wir dürfen uns wohl tatsächlich über die nächste Grafikrevolution freuen.

Die neuen Grafikkarten bei digitec

RTX 2080 Ti

GeForce RTX 2080 Ti DUKE 11G OC (11GB)
MSI GeForce RTX 2080 Ti DUKE 11G OC (11GB)
GeForce RTX 2080 Ti GAMING X TRIO (11GB)
1399.–
MSI GeForce RTX 2080 Ti GAMING X TRIO (11GB)
GeForce RTX 2080 Ti Phoenix GS (11GB)
noch 2 von 3 Stück
1251.–
Gainward GeForce RTX 2080 Ti Phoenix GS (11GB)
GeForce RTX 2080 Ti Gaming Pro OC (11GB)
1250.–
Palit GeForce RTX 2080 Ti Gaming Pro OC (11GB)
GeForce DUAL RTX 2080TI O11G (11GB)
1316.–
ASUS GeForce DUAL RTX 2080TI O11G (11GB)
GeForce RTX 2080 Ti Turbo 11G (11GB)
1292.–
ASUS GeForce RTX 2080 Ti Turbo 11G (11GB)
GeForce RTX 2080 Ti Gaming OC (11GB)
Gebraucht + Geprüft
1084.59
Gigabyte GeForce RTX 2080 Ti Gaming OC (11GB)
GeForce RTX 2080 Ti Windforce OC 11G (11GB)
Gigabyte GeForce RTX 2080 Ti Windforce OC 11G (11GB)

RTX 2080

GeForce RTX 2080 DUKE 8G OC (8GB)
MSI GeForce RTX 2080 DUKE 8G OC (8GB)
GeForce RTX 2080 GamingPro OC (8GB)
814.–
Palit GeForce RTX 2080 GamingPro OC (8GB)
GeForce RTX 2080 Windforce OC 8G (8GB)
Gebraucht + Geprüft
686.01
Gigabyte GeForce RTX 2080 Windforce OC 8G (8GB)

25 Personen gefällt dieser Artikel


Kevin Hofer
Kevin Hofer
Editor, Zürich
Technologie und Gesellschaft faszinieren mich. Die beiden zu kombinieren und aus unterschiedlichen Blickwinkeln zu betrachten, ist meine Leidenschaft.

Diese Beiträge könnten dich auch interessieren