Portal-Based Rendering
# Portal-Based Rendering

Das Portal-based Rendering unterscheidet sich ganz wesentlich von anderen Algorithmen, da es zur Verwendung von Innenansichten (indoor scenes) konzipiert wurde. Im Gegensatz zu weitläufigen Arealen kommt meist nur ein sehr kleiner Bereich zum Rendern in Frage. Hintergrund des Verfahrens bildet folgender Gedanke: Die Umgebung besteht lediglich aus Räumen, die durch sogenannte Portale (Türen, Fenster etc.) verbunden sind. So kommen für den Sichtbarkeitsbereich nur der Raum, in dem sich der Betrachter befindet, sowie alle angrenzenden Räume in Betracht (rekursiv). Die Raumeinteilung ist nicht Bestandteil des Verfahrens, sondern wird vorab entweder vom Designer festgelegt oder durch automatisierte Algorithmen berechnet.

Zunächst werden alle Polygone im Raum, in dem sich die Kamera befindet, auf Sichtbarkeit getestet und gerendert. Anschließend wird geprüft, ob sich im Sichtbarkeitsbereich ein Portal befindet, und der Raum, der sich hinter dem Portal befindet, mit einem entsprechend verkleinerten Sichtbarkeitsbereich gerendert. Dieser Vorgang ist rekursiv, d. h., er ruft sich selbst auf, bis alle sichtbaren Räume verarbeitet wurden.

Ein Vorteil bei diesem Rendering ist, dass man geometrisch eigentlich unabhängige Räume leicht miteinander verknüpfen kann. So lässt sich beispielsweise ein Spiegel dadurch erzeugen, indem man für ein Portal zweimal denselben Raum angibt. Auch das sonst sehr aufwändige Berechnen von Licht- und Schatteneffekten fällt hier leicht: Zuerst wird eine Szene mit dem Sichtbarkeitsbereich der Lichtquelle berechnet (nicht wirklich gerendert) und entsprechend beleuchtet. Anschließend wird die Szene aus der Sicht des Betrachters gerendert.

Da viele Schritte, wie zum Beispiel der Sichtbarkeitstest, in Hardware ausgeführt werden können, fällt die Implementierung eines solchen Algorithmus leicht und die Performance ist aufgrund der Hardwarebeschleunigung recht ansehnlich. Der große Nachteil beim Portal-based Rendering ist jedoch, dass es für outdoor scenes gänzlich ungeeignet ist. Daher wird dieser Algorithmus in vielen modernen 3D-Anwendungen mit anderen Verfahren wie Binary Space Partitioning oder Octrees kombiniert.

