Grundlagen

Der Photon Mapping Algorithmus ist in zwei Durchgänge aufgeteilt. Im ersten Durchgang (Pass 1) werden Photonen von den Lichtquellen in die Szene geschossen (Photonemission). In der Szene interagieren die Photonen mit den vorhandenen Objekten und werden von diesen reflektiert, transmittiert oder absorbiert (Photonscattering). Zusätzlich wird ein Photon beim Auftreffen auf eine diffuse Oberfläche in der Photonmap gespeichert.

Photonemission und Scattering im 1. Durchgang

Der zweite Durchgang (Pass 2) entspricht dem vom Ray Tracer bekannten Renderdurchgang. Hier wird nun für jeden Schnittpunkt, der auf einer diffusen Oberfläche liegt, zusätzlich anhand der in Pass 1 angelegten Photonmap abgeschätzt (Radiance Estimate), wie viel indirektes diffuses Licht an diesem Punkt einfällt. Dieser Vorgang nennt man Radiance Estimate.

Rendering im 2. Durchgang

Für jedes Photon wird in der Photonmap seine Position und Beitragskraft gespeichert. Die Photonmap selbst ist folglich völlig unabhängig von der Geometrie der Szene. Dies ermöglicht die Berechnung der indirekten diffusen Beleuchtung für komplexeste Szenen, was einer der grössten Vorteile dieses Verfahrens ist.
Die Tatsache, dass die Photonmap nur einmal (im Pass 1) angelegt wird, machen wir uns gerade zu Nutzen. Wir haben den verwendeten Ray Tracer so ausgebaut, dass der Rendervorgang mehrmals mit der selben Photonmap ausgeführt werden kann. Man kann also einmal die Photonen verschiessen und danach verschiedene Bilder rendern. Es kann zum Beispiel der Betrachtungsort und -winkel variiert werden. Weiter kann ein Bild mit dem Distributed Ray Tracer, ein zweites mit dem Path Tracer usw. gerendert werden.
Für mehr Grundlagen zu diesem Algorithmus sei das Buch [3] von Jensen verwiesen.

Globale Beleuchtung vs. Kaustiken

Kaustikphotonen, d.h. Photonen, die durch spekuläre Spiegelungen oder Transmissionen gebündelt wurden, treten vor allem lokal in hoher Dichte auf. Globale Photonen welche durch diffus-diffuse Reflektion erzeugt wurden, sind hingegen über die ganze Szene verstreut und weisen eine viel geringere Dichte auf.
Indirekte, diffuse Beleuchtung, repräsentiert durch globale Photonen, wird zuerst in der Szene gestreut, bevor sie vom Auge wahrgenommen wird und zeichnet sich durch weiche Übergänge aus. Deshalb muss während der Radiance Estimate in einem grossen Radius nach verhältnismässig vielen Photonen gesucht werden.
Demgegenüber stehen die Kaustiken, welche direkt vom Auge gesehen werden und zudem scharfe Kanten aufweisen. Für Kaustiken muss in einem kleinen Radius nach Photonen gesucht werden. Dieser Gegensatz führt zu Problemen, wenn man in einem Bild gleichzeitig weiche globale Beleuchtung und scharfe Kaustiken darstellen will. Man muss für den Suchradius und die Anzahl zu suchende Photonen Kompromisse eingehen und kann nie Kaustiken und globale Beleuchtung gleichzeitig optimal anzeigen.

Um die optimale Anzeige von Kaustiken und globaler Beleuchtung zu erreichen, arbeitet man mit zwei Photonmaps, der Global Photonmap und der Caustics Photonmap. Durch diese Massnahme kann man die Suchradien für Kaustiken und globale Beleuchtung variieren. Die Radiance Estimate muss deshalb zweimal durchgeführt, einmal in der Global Photonmap und einmal in der Caustics Photonmap.
Auch die Photon Scattering muss angepasst werden, damit unterschieden werden kann, wo die Photonen gespeichert werden sollen. Zuerst führen wir drei Photonentypen ein:

  • LIGHT, Photonen, die direkt von der Lichtquelle stammen
  • GLOBAL, Photonen, welche nach der Lichtquelle auf eine diffuse Oberfläche trafen
  • CAUSTIC, Photonen, welche nach der Lichtquelle auf ein spekuläre Oberfläche trafen
Speicherung in Kaustik- oder Global-Photonmap

Photonen werden mit dem Typ LIGHT von den Lichtquellen emittiert. Beim ersten Scattering werden sie zu GLOBAL, falls sie diffus gestreut wurden, oder CAUSTIC, bei spekulärer oder transmissiver Streuung. GLOBAL Photonen können nicht mehr zu CAUSTIC Photonen werden und werden beim Auftreffen auf eine diffuse Oberfläche in der Global Photonmap gespeichert. CAUSTIC Photonen bleiben solange CAUSTIC wie sie spekulär oder transmissiv gestreut werden. Beim Auftreffen auf eine diffuse Oberfläche werden sie in der Caustics Photonmap gespeichert und «sterben» danach, da sie nichts zur globalen Beleuchtung beitragen.

Kaustik Photonen mit OpenGL visualisiert
Globale Photonen mit OpenGL visualisiert
×