Raytracing in Spielen I: Strahlen versprechen den Fotorealismus

 3/5
Daniel Pohl
94 Kommentare

Quake 3: Raytraced

Im Jahre 2004 habe ich im Rahmen meiner Studienarbeit an einem der ersten Computerspiele gearbeitet, die Raytracing zum Darstellen der Szene benutzen. Als Basis wurden dabei die Daten (Levels, Spielermodelle, Sounds, …) aus „Quake 3“ benutzt. Es war beeindruckend zu sehen, wie einfach Spezialeffekte mit Raytracing zu programmieren waren, die mit der herkömmlichen Grafiktechnologie, genannt „Rasterisierung“, wesentlich mehr Zeit und Arbeit in Anspruch genommen hätten. So ließen sich beispielsweise dynamische und pixelgenaue Echtzeit-Schatten mit nur etwa zehn Zeilen Code wie in der Einleitung beschrieben implementieren.

Schatten in Quake 3: Raytraced (2004)
Schatten in Quake 3: Raytraced (2004)

Das Erzeugen von Schatten ohne störende Artefakte ist in vielen Computerspielen immer noch ein Problem (auch wenn es hier bereits Ausnahmen gibt, die es gut hinbekommen). Hier einige Negativbeispiele von Spielen, die alle im Jahre 2006 veröffentlicht wurden. Da die Schatten lediglich über Annäherungen in eine Textur hinein berechnet werden, kommt es durch die Begrenzung der Auflösung dieser Textur zu sichtbaren Artefakten. Es sind die einzelnen Pixel der so genannten „Shadow Map“ sichtbar. Somit wird der eigentlich erhoffte Effekt der realitätsgetreueren Darstellung durch Schatten gedämpft.

GIF „Gothic 3“ (links), „The Lord of the Rings: The Battle for Middle-Earth II“ (oben)und „Call of Juarez“ (unten – alle 2006)

Ein weiterer Vorteil von Raytracing ist, dass man wesentlich mehr Polygone mit einem vergleichsweise zur Rasterisierung geringen Einfluss auf die Framerate benutzen kann. Nach dem Motto „Pimp up your Level“ habe ich einige Wände und Böden aus Quake 3 mit wesentlich mehr Details versehen. Anstatt nur zwei Dreiecke für eine Wand zu benutzen, kamen gleich 5.000 zum Einsatz.

Benutzung von 5.000 anstatt 2 Dreiecken
Benutzung von 5.000 anstatt 2 Dreiecken
Die ausgetauschte Wand im Spiel: Die echten geometrischen Verformungen können aus jeder Perspektive betrachtet werden.
Die ausgetauschte Wand im Spiel: Die echten geometrischen Verformungen können aus jeder Perspektive betrachtet werden.

Das Ergebnis: Obwohl die Komplexität der Geometrie in dem modifizierten Quake-3-Level sechsmal so hoch war, verringerte sich die Framerate unter Einsatz von Raytracing lediglich um 25 Prozent. Unter Einsatz von Rastarisierung würde der Geschwindigkeitsverlust ein Vielfaches bedeuten.

Besonders interessant ist die Berechnungskomplexität beim Erzeugen des Bildes in Abhängigkeit von der Anzahl an Dreiecken. Durch die Verwendung des BSP-Baums ist der Einfluss logarithmisch, bei der Rasterisierung dagegen linear.

Rechenaufwand bei Rasterisierung und Raytracing
Rechenaufwand bei Rasterisierung und Raytracing

Man sieht, dass Raytracing (grün) einen gewissen Grundaufwand hat, der bei einer geringen Anzahl an Dreiecken im Vergleich mit der Rasterisierung (rot) hoch ist. Hat man jedoch wesentlich mehr Geometrie in der Szene, so ist es ab dem Schnittpunkt S effizienter, Raytracing anstatt Rasterisierung zum Erzeugen des Bildes zu benutzen. Welchen Wert S genau hat, ist unbekannt und implementierungsabhängig (spekulativ wird oft der Bereich von 1 bis 10 Millionen Dreiecken genannt). Jedoch ist abzusehen, dass mit immer weiter steigendem Detailgrad in Computerspielen dieser Punkt irgendwann erreicht werden wird.

Andere Spezial-Effekte in Quake 3: Raytraced sind Glas, Spiegelungen-in-Spiegelungen, Kameraportale und Bodennebel.

Glas
Glas
Spiegelungen-in-Spiegelungen
Spiegelungen-in-Spiegelungen
Kameraportal
Kameraportal
Bodennebel
Bodennebel

Um Quake 3: Raytraced in Action zu sehen, können Sie sich die folgenden beiden Videos ansehen: