Raytracing in Spielen II: Das Reich der Strahlen macht Fortschritte

 3/8
Daniel Pohl
117 Kommentare

Beispiel 2

Das zweite Beispiel ist eine Fallstudie mit mehreren Reflexionen in Reflexionen auf Kugeln und Tori. (Ein Torus ist der mathematische Begriff für ein geometrischens Objekt in der Form eines Donuts. Der Plural von Torus ist Tori.)

Mehrfachspiegelungen in Spiegelungen
Mehrfachspiegelungen in Spiegelungen

Wenn man für einen Moment die Tatsache ignoriert, dass es generell unmöglich wäre, solch' eine Szene mittels Rasterisierung zu rendern, so stellt man fest, dass es auf einem anderen Weg (Raytracing) nicht nur möglich, sondern auch mit wesentlich weniger Rechenaufwand verbunden ist, als man zuerst angenommen hat! Denn Raytracing berechnet alle Reflexionen effizient und korrekt - aber eben nur, wenn sie wirklich benötigt werden, also sichtbar sind. In der folgenden Sequenz wird der Ablauf zum Erstellen des Bildes dargestellt und es wird veranschaulicht, wieviele Strahlen benutzt werden:

Schritt 1: Primärstrahlen – mindestens einer pro Pixel (rot markiert), alles auf dem Bildausschnitt ist sichtbar

Spiegelungen in Quake 4 – 1. Ebene
Spiegelungen in Quake 4 – 1. Ebene

Schritt 2: Primäre Reflexionen (grün markiert), nur die spiegelnden Flächen reflektieren

Spiegelungen in Quake 4 – 2. Ebene
Spiegelungen in Quake 4 – 2. Ebene

Schritt 3: Sekundäre Reflexionen (blau markiert), reflektierte Strahlen werden nur von den blauen Flächen erneut reflektiert

Spiegelungen in Quake 4 – 3. Ebene
Spiegelungen in Quake 4 – 3. Ebene

Schritt 4: Tertiäre Reflexionen (gelb markiert), nur auf den gelben Flächen treffen bereits zweimal reflektierte Strahlen erneut auf und werden reflektiert

Spiegelungen in Quake 4 – 4. Ebene
Spiegelungen in Quake 4 – 4. Ebene

Schritt 5: usw. usf. ...

Wie man eindeutig sieht, verringert sich die Anzahl an zusätzlichen Strahlen drastisch mit jedem weiteren Schritt. Daher kann selbst eine so komplexe Szene mit vielen Spiegelungen in Spiegelungen mit nur einem geringen zusätzlichen Kostenaufwand mittels Raytracing berechnet werden.