KI verändert die Raytracing-Landschaft

Durch Interaktion mit Objekten werden Lichtstrahlen reflektiert, gebrochen oder gar absorbiert.

Diese Aussage ist einer der Grundsätze der Optik und im Grunde genommen für jeden Betrachter leicht zu verstehen. Sie stellt die Grundlage dessen dar, wie wir Menschen in der natürlichen Umgebung die Farbe einzelner Objekte und ihre Intensität wahrnehmen. An diesen Objekten werden nur bestimmte Teile des Farbspektrums absorbiert, andere reflektiert. Die Verarbeitung dieser Wahrnehmung findet im menschlichen Gehirn ohne besonderen Aufwand statt.

Der umgekehrte Weg beim Raytracing
Quelle: www.scimacros.de

Vor deutlich größere Herausforderungen stellt es die Hardware bei dem Versuch, diese Effekte in einer virtuellen Szene realistisch abzubilden, insbesondere dann, wenn die Szene in eine Echtzeitumgebung eingebettet werden soll. Eine Möglichkeit, wie diese Herausforderung bewältigt werden kann, ist das sogenannte Raytracing.

Erklärung von View Rays und Shadow Rays
Quelle: http://resumbrae.com

Raytracing beschreibt eine Methode, in der jeder Lichtstrahl rückwärts berechnet wird: vom Auge des Betrachters aus hinein in den virtuellen Raum. Trifft der Berechnungsalgorithmus auf ein Objekt, an dem der Lichtstrahl wie oben beschrieben reflektiert und absorbiert wird, analysiert er die Oberflächenbeschaffenheit des Objekts. Aufbauend auf dieser Analyse werden anschließend der Weg, die verbleibende Energie des Photons und die daraus resultierende Farbe eines jeden Photons in der Szene weiterberechnet.

Raytracing erklärt
Quelle: imi.kit.edu

Welche Vor- und Nachteile hat der Einsatz von Raytracing?

Die Simulation des Weges eines jeden Lichtstrahls führt zu einer deutlich erhöhten Realitätsnähe des Bildes. Insbesondere die korrekte Spiegelung an Glasoberflächen oder anderen Flächen, die Voll- und Teilreflektionen aufweisen, können somit erheblich realitätsnäher dargestellt werden.

Die Berechnung des reflektierten Weges eines jeden Photons bewirkt zudem, dass das sogenannte sekundäre Licht, also jenes Licht, das nicht direkt durch die Lichtquelle, sondern durch Reflektionen erzeugt wird, ebenfalls in die Szene integriert werden kann.

Screenshot Raytracing Projekt

Diese Berechnung ist jedoch extrem aufwändig. Insbesondere bei rauen Oberflächen, und damit verbundener komplexerer Streuung des Lichtes, benötigt die Verarbeitung der Szene eine hohe Rechenleistung.

In diesem Zusammenhang muss auch festgelegt werden, wie viele Bounces des Lichts zurückverfolgt werden sollen, also nach wie vielen Reflektionen eines Lichtstrahls man seinen Effekt auf die Szene als so klein betrachtet, dass man ihn nicht weiterverfolgt.

Je mehr Bounces in die Berechnung einbezogen werden, desto realitätsnaher wird die Darstellung der Schatten, aber der Prozess der Berechnung wird sehr viel mehr als exponentiell aufwändiger. Je aufwändiger die Berechnung der Szene, desto schwerer wird es natürlich, sie in eine Interaktionsumgebung in Echtzeit einzubinden. Ist die Hardware nicht in der Lage, eine ausreichende Menge an Bildern pro Sekunde zu berechnen, erhält man allenfalls eine von Unterbrechungen geplagte Simulation. Gelöst wurde dieses Problem des Raytracingprozesses in der Vergangenheit über die Berechnung einzelner Lichtstrahlen und eine anschließende Füllung der restlichen Wege anhand einer Wahrscheinlichkeitsverteilung innerhalb eines gewissen Radius um das berechnete Photon herum. Dies beschleunigte den Berechnungsprozess ausreichend, führte allerdings im Gegenzug wiederum dazu, dass Ungenauigkeiten innerhalb des Bildes auftreten.

Welche Rolle spielt dabei KI?

Eine potenzielle Lösung des oben beschriebenen Zwiespalts zwischen Qualität der Szene und benötigter Rechnerleistung bietet der sogenannte Denoiser. Dabei handelt sich um eine Art Weichzeichner, der das im Raytracingprozess entstandene Bild anpasst. Er ist jedoch um ein Vielfaches komplizierter als klassische Weichzeichner, da er harte Kanten und Übergänge des Lichts berücksichtigen muss. Der Denoiser ist eine relativ alte Technik, die schon lange Anwendung beim Rendering von virtuellen Szenen findet. Allerdings dauerte der Vorgang bisher bis zu mehreren Minuten pro Szene und war deshalb unbrauchbar für Echtzeitanwendungen.

Die Fortschritte der KI-Entwicklung machen nun jedoch auch seine Nutzung in solchen Szenen möglich. Eine KI wird mithilfe von Bildern aus einer Datenbank darauf trainiert, wie ein perfektes Bild am Ende des Denoisingprozesses in Abhängigkeit des Bildes vor dem Prozess aussehen muss. Für dieses Training ist die KI-Technik auf eine ausreichende GPU-Beschleunigung angewiesen. In den letzten Generationen der Entwicklung von Grafikkarten wurden hier entscheidende Fortschritte erzielt. Sie ermöglichen, dass einzelne Grafikkarten in der Lage sind, innerhalb von Millisekunden die Bilder zu verarbeiten und somit die Anforderungen der Echtzeitanwendung zu erfüllen.

Solche Grafikkarten sind zum aktuellen Zeitpunkt allerdings noch relativ rar und dementsprechend kostenintensiv.

Wofür benutzen wir bei Inreal bereits Raytracing?

Aktuell wird Raytracing bei uns hauptsächlich für Bilder und Videos eingesetzt, denn in diesen Fällen sind die Bildrate und damit die Anforderungen an die Dauer des Berechnungsprozesses nicht entscheidend. In Echtzeitanwendungen werden vor allem Vollreflektionen und spiegelnde Oberflächen mithilfe von Raytracing umgesetzt.

Die Abbildung sekundären Lichts findet aktuell nur in manchen Projekten und Testumgebungen statt.

Der Einsatz in allen Bereichen ist allerdings vermutlich nur noch eine Frage der Zeit. Bereits in ein bis zwei Generationen der Grafikkartenentwicklung sollte deren Leistungsspektrum ausreichend sein, um den Kompletteinsatz von Raytracing innerhalb unserer Lösungen zu ermöglichen.