Categories: 3D Renderings

Hybrides Rendering für Echtzeit Lighting: Raytracing vs. Rasterung.

In diesem Artikel zeigen wir ihnen, wie Sie Rays sinnvoll einsetzen können, um verschiedene Effekte zu erzeugen und um die Ergebnisse mit denen ihres gerasterten Gegenstücks zu vergleichen.

In dem folgenden Video finden Sie eine Demo für hybrides Rendering:

For privacy reasons YouTube needs your permission to be loaded. For more details, please see our Datenschutzerklärung.

Besseres Rendering durch hybrides Raytracing.

Beim Shading eines Pixels geht es im Wesentlichen darum seinen Kontext zu finden: wo er sich in der Welt befindet, woher das Licht kommt, ob das Licht kommt, ob das Licht durch andere Oberflächen blockiert wird oder von ihnen abprallt. Rasterer sind nicht besonders gut darin, dies zu bestimmen, da jedes Dreieck unabhängig vom Rest behandelt wird. Es gibt offensichtlich Wege, dieses Problem bis zu einem gewissen Grad zu umgehen, aber diese können unnötig, verworren oder von begrenzter Effizienz sein und führen oft zu einer mittelmäßigen Bildqualität. Raytracer hingegen sind extrem gut darin, herauszufinden, wie die Umgebung aussieht, neigen aber aufgrund der höheren Komplexität der Berechnungen dazu, sehr viel langsamer zu sein. Ein hybrider Renderer kann die Geschwindigkeit des Rasterers und das Kontextbewusstsein der Raytracer kombinieren, indem er einen G-Puffer, der alle sichtbaren Oberflächen repräsentiert, rastert, bevor dieser seine Raytracing-Fähigkeiten zur Berechnung der Beleuchtung und Reflexionen für diese Oberflächen nutzt.

Schatten.

Der Umgang mit Schatten in einem Raster ist alles andere als intuitiv und erfordert einiges an Logistik: Die Szene muss aus der Sicht jedes einzelnen Lichts gerendert, in einer Textur gespeichert und während der Beleuchtungsphase auf sich selbst projiziert werden. Schlimmer ist noch, dass es weit davon entfernt ist, auch nur annähernd akzeptabel in Bezug auf die Qualität zu sein: Diese Schatten sind sehr anfällig für Aliasing (weil ein Pixel, das vom Licht gesehen wird, nicht mit einem Pixel übereinstimmt, das von der Kamera gesehen wird) oder Acne (weil ein Schattenbild-Texel einen einzelnen Tiefenwert speichert, aber einen großen Bereich abdecken kann). Darüber hinaus müssen die meisten Rasterer spezielle Shadow Map-Typen unterstützen wie z.B. kubische Schatten oder kaskadierte Shadow Maps, was die Komplexität des Renderers erheblich erhöht.

In einem Raytracer kann ein einziger Codepfad alle Verschattungsszenarien handhaben. Noch wichtiger ist, dass der Shadowing-Prozess so einfach und intuitiv ist, wie das Firing eines Rays von der Oberfläche auf die Lichtquelle und das Überprüfen, ob auf dem Weg etwas getroffen wurde. Die PowerVR Raytracing-Architektur belichtet sogenannte schnelle „feeler Rays“, die nur die Anwesenheit von Geometrie entlang des Rays prüfen, wodurch sie sich besonders für eine effiziente Schattenwiedergabe eignen.

3DMaster