Die Reduktion der Komplexität
Die Berechnung der Schnittpunkte von Strahl und Objekt können auch von herkömmlichen Shadern und Grafikprozessoren übernommen werden. Bei den RTX-Grafikkarten von Nvidia (Turing-Architektur) sollen eigens dafür vorgesehene "RT-Cores" (Raytracing Cores) bei diesen aufwändigen Berechnungen helfen, trotzdem wird die Komplexität der 3D-Szene im Vorfeld der Berechnung reduziert.
An dieser Stelle kommt eine baumbasierte Beschleunigungsmethode zum Einsatz, die als Bounding Volume Hierarchy oder BVH bezeichnet wird (
Details). Die Methode wird dazu verwendet, um zu berechnen, wo die Strahlen und Objekte/Dreiecke sich schneiden. Vereinfacht gesagt prüft der Algorithmus zunächst grob, in welchem Bereich der Szene der zu berechnende Pixel liegt und wird dann sukzessive kleinteiliger und spezifischer bis zum Objekt am Ende. Trotz der Reduktion der Anzahl der erforderlichen Strahl-/Objektschnitttests ist der Prozess sehr aufwändig.
Im Anschluss an den BVH und weiteren Raytracing-Operationen wird ein Entrauschungsalgorithmus (Denoising) angewandt, um die visuelle Qualität des resultierenden Bildes zu verbessern. Letzteres Verfahren ist ebenfalls komplex und wurde in den von Nvidia zur Verfügung gestellten Presseunterlagen weitgehend ausgeklammert (
Video). Ohne Denoising ist das berechnete Bild nicht nutzbar.
Weitere Performance-Tricks
Darüber hinaus versucht Nvidia mithilfe von Deep Learning als maschinelle Lerntechnik die Raytracing-Performance durch die Nutzung von Künstlicher Intelligenz zu erhöhen. So werden zum Beispiel weniger Strahlen als erforderlich in die 3D-Szene geschickt, was natürlich die Rechenlast reduziert, aber auch dazu führt, dass manche Bereiche des Bildes keinen korrekten Farbwert haben oder "rauschen".
Die Schnitt-Tests werden zunächst grob durchgeführt und dann immer feiner. Danach wird das Bild "entrauscht". Bildquelle: Nvidia.
Diese Fehler werden mithilfe der KI bzw. der trainierten Daten korrigiert.
Ähnlich funktioniert auch DLSS (Deep Learning Super Sampling) als einer auf Künstlicher Intelligenz und trainierten Daten fußender Algorithmus zur Kantenglättung bei Auflösungen meist über 1080p. Bei DLSS werden die "Tensor Cores" im RTX-Grafikchip eingesetzt. Diese Rechenkerne werden beim De-Noising nicht benutzt, wie es in einer früheren Version des Artikels stand.
Raytracing On = Niedrigere Bildwiederholrate
Trotz aller technischer Kniffe und Einschränkungen beim Einsatz stellt Raytracing hohe Anforderungen an die Hardware. Der Einfluss auf die Bildwiederholrate zwischen aktiviertem und ausgeschaltetem Raytracing ist enorm. Im Vergleich zu den bisherigen Rendering-Methoden sind die optischen Verbesserungen oftmals schwerer zu erkennen, weil man einerseits an die Darstellung via Rastergrafik gewöhnt ist und andererseits in vielen schnellen Spielen solche Grafikfeatures wie Reflexionen und Schattenwurf weniger prominent wahrgenommen werden.
Mit DirectX und Vulkan
Die wohl gängigste Software-Schnittstelle wird DirectX Raytracing (
DXR) in DirectX 12 unter Windows 10 sein. Etwaige Raytracing-Rechenschritte können über DXR an die zuständigen Recheneinheiten - zum Beispiel auf den RTX-Karten - verwiesen werden.
Mögliche Anwendungsbereiche von Raytracing. Von links nach rechts: Umgebungsverdeckung bzw. Objektverdeckung, Schatten, Reflexionen und globale Beleuchtung. Bildquelle: Nvidia.
Vulkan bietet ebenfalls Hardware-beschleunigte Raytracing-Unterstützung, die rein theoretisch sogar unter Linux lauffähig ist.
In Game-Engines hält die Raytracing-Unterstützung ebenfalls Einzug. Sowohl die
Unreal Engine 4 als auch die
Unity Engine und
Frostbite bieten entsprechenden Support. Die
CryEngine setzt derzeit auf Software-Raytracing ohne dedizierte Hardware-Beschleunigung zu nutzen.