Die Konstruktion der BVH 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.