Ambient Occlusion Precomputed Radiance Transfer Johannes Hummel 01.10.2007 Inhaltsverzeichnis 1 Ambient Occlusion 2 1.1 Funktionsweise............................ 2 1.2 Dynamic Ambient Occlusion.................... 2 2 Precomputed Radiance Transfer 4 2.1 Rendering Equation......................... 5 2.2 Neuman Expansion.......................... 5 2.3 Funktionsweise............................ 7 1
1 Ambient Occlusion Heutzutage ist man bestrebt, Computergrak moglichst realitatsnah darzustellen. Allerdings ist dies mit den allgemein zur Verfugung stehenden Methoden nur schwer moglich und immer mit sehr hohem Rechenaufwand verbunden. Ambientes Licht addiert nur einen festgelegten Farbwert auf, ohne dabei 3D- Geometrieen zu berucksichtigen. Diuses und punktuelles Licht leuchten jeweils nur einen kleinen Bereich aus und man benotigt Unmengen an Lichtquellen, um eine Szene realitatsnah zu beleuchten. Die Plazierung und Berechnung dieser kostet sehr viel Rechenzeit. Hier setzt Ambient Occlusion (zu deutsch Umgebungsverdeckung) an. Vorgestellt wurde diese Methode auf der SIGGRAPH2002. Ambient Occlusion basiert auf der Beobachtung, dass Ritzen und Ecken eine geringere Beleuchtungsstarke aufweisen, als der Rest der Szene. Der Grund hierfur sind die zahlreichen, diffusen Reexionen an Engstellen. 1.1 Funktionsweise Um die Beleuchtung einer Szene mit Ambient Occlusion berechnen zu konnen, legt man eine Einheitskugel aus Licht um die komplette Szene. Das Licht wird nur durch Selbstverdeckung abgeschwacht bzw blockiert. Hierfur gibt es zwei Berechnungsverfahren: Inside-Out und Outside-In. Diese unterscheiden sich ledeglich in der Richtung in der Strahlen verfolgt werden. Beim Inside-Out Verfahren wird zuerst vom Betrachter aus ein Strahl ausgeschickt. Trit dieser Strahl auf eine mit einem Ambient Occlusion Shader belegte Flache, so werden vom Auftrepunkt des Strahls aus eine festgelegte Menge an neuen Strahlen innerhalb der Normalenhalbkugel fur einen Treertest ausgeschickt. Trit ein Strahl auf einen Punkt auf einer Oberache, so wird dies mit (1 - hitratio) gespeichert. Diese Schritte werden so lange wiederholt, bis auf jeden Punkt, den der Betrachter sieht, ein Strahl ausgesendet wurde. Das Ergebnis der Treffertests wird anschlieend als Intensitat gerendert oder mit der Environment- /Lightmap multipliziert. In Abbildung 1 sind diese vier Schritte bildlich dargestellt. Durch das schrittweise abtasten und die zufallig ausgesendeten Strahlen entstehen keine scharfen Kanten, wie bei anderen Verfahren. 1.2 Dynamic Ambient Occlusion Die Berechnung der Verdeckung benotigt durch die groe Anzahl an Treertests eine hohe Rechenkapazitat. Ein weiterer Nachteil von Statischem Ambient Occlusion ist, dass die Objekte einer Szene ihre Lage zueinander nicht verandern durfen. Aus diesem Grund hat NVIDIA eine Methode entwickelt Ambient Occlusion dynamisch zu berechnen. Mit aktuellen GPUs ist dies sogar ohne weiteres in Echtzeit moglich. Um diese Geschwindigkeit zu erreichen, werden zuerst Vertices in orientierte Scheiben mit Position, Normale und Flache zerlegt (Abbildung 2), wobei von der Vorderseite (Front-Face) Licht ausgeschickt und reektiert und von der Ruckseite (Back-Face) durchgelassen und der Schatten gesetzt wird. Anschlieend werden die jeweiligen Vertex-Flachen berechnet. Diese entspricht 1 der Flache 3 2
Abbildung 1: Grasche Darstellung des Inside-Out Verfahrens der anliegenden Dreiecke. Fur ein Dreieck mit den Kanten a,b und c gilt laut Heron: p s(s a)(s b)(s c) wobei s der halbe Umfang des Dreiecks ist: s = (a + b + c)=2 Abbildung 2: erlegung der Vertices Nach diesen Vorbereitungen werden die Positionen, Normalen und Flachen der Scheiben in eine Texturemap geladen, um die spateren Ambient Occlusion Berechnungen im Pixel-Shader durchzufuhren. Dies dient einzig dazu eit zu sparen, da die Berechnung von Animationen und Transformationen direkt auf der Texturemap durchfuhrbar sind. 3
Anschlieend wird Ambient Occlusion durch die Schatten-Approximation von Landis berechnet. 1 r cos Emax(1; 4 cos R ) q A + r2 In Abbildung 3 ist die Formel grasch dargestellt. Abbildung 3: Grasche Darstellung zur Berechnung von Dynamic Ambient Occlusion 2 Precomputed Radiance Transfer Eine weitere Moglichkeit gerenderte Szenen moglichst realitatsnah darzustellen ist Precomputed Radiance Transfer (PRT). Mit PRT kann man Objekte mit unterschieldichen Beleuchtungen, zum Beispiel direktes und indirektes Licht und Kaustiken, schattieren. Desweiteren wird jegliche Art von Transporteigenschaft berechnet. Nachteile von PRT sind die eingeschrankte Echtzeitfahigkeit, nur das Licht darf sich verandern, die Beleuchtung muss weit entfernt sein und je nach Implementierung darf nur niederfrequentes Licht benutzt werden. Desweiteren stellt PRT kein Beleuchtungssystem fur beliebige dynamische Szenen dar, da Objekte starr sein mussen und die Objekt zu Objekt Interaktion eingeschrankt ist. Anwendungsgebiete fur die PRT sind vor allem verschiedene Beleuchtungsumgebungen, Materialeigenschaften und Transporteekte, wie in Abbildung 4 dargestellt. Abbildung 4: Beispiele fur Einsatzgebiete von Precomputed radiance Transfer 4
2.1 Rendering Equation Um die Strahlung, die von einem Punkt ausgeht berechnen zu konnen, benotigt man die Rendering Equation. L P!! d = L e P!! d + L p!! d Le P!! d R Strahlung von Punkt P in Richtung d Eigenstrahlung von Punkt P in Richtung d f r P;! s!! d L (P! s ) HNP (! s ) ds Integral uber die Richtungen s auf der Normalenhalbkugel uber Punkt P Abb. 5a Abb. 5b Abb. 5c L (P! s ) Strahlung aus Richtung s zu Punkt P Abb. 5d fr P;! s!! d BRDF von Punkt P fur einkommende Strahlen s in Richtung d Abb. 5e H NP (! s ) Lambertsche Regel Abb. 5f a) b) c) d) e) f) Abbildung 5: Elemente der Rendering Equation 2.2 Neuman Expansion Da in der Informatik Integrale einen hohen Rechenaufwandt bedeuten, verwendet man in der Regel die Neumann Expansion, um die Berechnung des Integrals zu umgehen. In der Neumann Expansion wird die von einem Punkt ausgehende Strahlung als eine unendliche Reihe dargestellt (Abbildung 6a). L P!! d = L 0 P!! d + L 1 P!! d + ::: 5
Der erste Term der Reihe, L 0, steht fur das Licht, das von einer entfernten Beleuchtungsumgebung aus, direkt in Punkt P auftrit. Dieser Term ist ein Integral uber die Halbkugel in Punkt P (Abbildung 6b). Neu an diesem Ausdruck ist L env, die einzige Lichtquelle in dieser Szene. Da die Lichtquelle als weit entfernt angenommen wird, spielt die Lage von Punkt P in der Szene keine Rolle. Normalerweise wird dafur eine Environmentmap benutzt (Abbildung 6c). Der zweite neue Faktor ist die Visibility-Funktion V. Dies ist eine binare Funktion, die 1 ist, solange der Punkt die umgebende Environmentmap 'sehen' kann und 0, wenn dies nicht der Fall ist (Abbildung 6d). L 0 halt auerdem fest, wie das Licht, das in Punkt P ankommt, auftrit, um die ausgesandte Strahlung zu speichern. L 0 P!! d = f r P;! s!! d L env (! s ) V (P!! s ) HNP (! s ) ds Der zweite Term in der Neumann Expansion, L 1 stellt alle Pfade dar, die nach einem Sprung von der Environmentmap zu Punkt P gelangen und halt die ausgehende Strahlung fest (Abbildung 6e). Auch dieser Term beinhaltet ein konventionelles Integral, das den vorangehenden Term L 0 beinhaltet. Allgemein wird in diesem Term festgehalten, wie die Strahlung des vorangegangenen Sprunges die von Punkt P aktuell ausgehende Strahlung beeinut (Abbildung 6f). L i P!! d = f r P;! s!! d L i 1 (p! s ) (1 V (P!! s )) HNP (! s ) ds a) b) c) d) e) f) Abbildung 6: Elemente der Neumann Expansion 6
2.3 Funktionsweise Die von einem Punkt P ausgehende Strahlung lat sich auch einfacher darstellen. L out = L (s) T (s) ds L (s) ist dabei die Beleuchtungsfunktion, in der die Lichtquellen als Funktion aufgefat werden konnen. T (s) stellt die Transferfunktion dar, also die Antwort eines Objektes auf seine Beleuchtung als Funktion, die die eingehende Strahlung auf die ausgehende abbildet. Bei der PRT geht man davon aus, da das Objekt von einer entfernten Environmentmap umgeben ist. iel ist es, L env (w)! L (p! w) durch lineare Operationen fur jeden Punkt P zu berechnen. Daraus entsteht die Transfermatrix. Allerdings ergeben sich daraus einige Probleme. Bei den spekularen Eekten ist L out blickwinkelunabhangig und die BRDF ist nur fur diuse Komponenten konstant. Ein weiteres Problem ist der Neighbourhood-Transfer, also der Ein- u eines Objektes auf ein anderes Objekt zur Laufzeit, denn die Normalen des zweiten Objektes sind unbekannt. Dadurch kann man L out nicht vorberechnen. Die Losung fur dieses Problem ist Transfered Incident Radiance (TIR). Bei TIR wird die einfallende Strahlung aus allen Raumrichtungen fur jeden Punkt P der Szene berechnet. Der Unterschied zu L env liegt in der Verdeckung und in der Reexion, im Ummaskieren von L env in eine andere Funktion, in einer spharischen Funktion fur jeden Punkt P und im Neighbourhood-Transfer, die uber die Berechnung der freien Raumpunkte interpoliert wird (Abbildung 7). Abbildung 7: Transfered Incidence Radiance Vereinfacht lat sich der Ablauf der PRT folgendermaen darstellen: 1. Oine-Berechnung der Transfermatrizen 2. Online-Berechnung von L xfer durch Transfermatrizen 3. Auswertung der BRDF 4. Berechnung der Outgoing Radiance = TIR + reektierte Strahlung in P 5. Berechnung von L out in Punkt P 7