Raytracing in Spielen III: Quake Wars mit Raytracing

 2/5
Daniel Pohl
99 Kommentare

Erste Schritte

Am Anfang war das Licht

Für dieses Projekt starteten wir damit, den Renderer von Null auf komplett neu zu schreiben. Daher sahen die ersten Bilder, die wir bekamen, auch nicht nach der üblichen Raytracing Qualität aus, sondern zeigten nur die grundlegenden Teile der Geometrie ohne jegliche Shader oder Texturen.

Quake Wars: Raytraced ohne Texturen
Quake Wars: Raytraced ohne Texturen

Normalerweise laden Spiele ihre Geometrie aus einer Vielzahl von verschiedenen Modellformaten – entweder erzeugt über den Ingame-Editor, oder durch externe Modellierungswerkzeuge. Nachdem man verifiziert hat, dass keine Objekte vergessen wurden, kann man sich um das Laden der Texturen kümmern. Moderne Spiele haben oft ihre eigene Materialbeschreibungssprache, mit der Designer auf einfache Art und Weise Texturparameter modifizieren, oder Texturen übereinander blenden können. Dasselbe gilt für die Nutzung von Bumpmaps über Specularmaps bis hin zu kleinen programmierbaren Shaderprogrammen mit einer Auswertung von mathematischen Ausdrücken. Wertet man diese Informationen aus, so kann man das obige Bild nun mit den dazugehörigen diffusen Texturen rendern.

Quake Wars: Raytraced mit Texturen (ohne Beleuchtung)
Quake Wars: Raytraced mit Texturen (ohne Beleuchtung)

Alle aktuellen Spiele benutzen derzeit eine Renderingtechnologie namens „Rasterisierung“. Diese benötigt oft komplizierte Programmierarbeit, da zum Erzeugen von Special Effects (wie z.B. Schatten oder Spiegelungen) Annäherungen benötigt werden, die durch mehrere Rendering-Durchgänge erzeugt werden, deren Ergebnisse zudem oft in auflösungslimitierten Texturen zwischengespeichert werden. In manchen Fällen können diese Approximationen deshalb deutlich sichtbar fehlschlagen.

Lasst uns einen genaueren Blick auf Schatten werfen. Mit Raytracing muss man lediglich den Pfad vom Licht zur Oberfläche verfolgen und feststellen, ob das Licht auf dem Weg geblockt wird, oder aber ans Ziel gelangt. Dies kann sehr einfach anhand eines Strahls (dem so genannten „Schattenstrahl“) erreicht werden. Wenn der Strahl von der Lichtquelle die betrachtete Oberfläche erreicht, dann ist dieser Punkt der Oberfläche beleuchtet. Falls nicht, so liegt er im Schatten. Das Spiel Quake Wars findet hauptsächlich in großen Außenarealen statt, wodurch die wichtigste Lichtquelle die Sonne darstellt. Diese Beleuchtungsquelle konnten wir sehr einfach hinzufügen und erhielten damit – wie erwartet – auch die entsprechenden Schatten.

Quake Wars: Raytraced mit Texturen (beleuchtet)
Quake Wars: Raytraced mit Texturen (beleuchtet)