HS: Aspects of Game Engine Design Pre-Computed Radiance Transfer – PRT in Anlehnung an SigGraph 2005 Course: PRT Theory and Practise HS: Aspects of Game Engine Design
Agenda Einleitung Precomputed Radiance Transfer Zusammenfassung Herausforderung Precomputed Radiance Transfer Was ist PRT? Was ist es nicht? Wie funktionierts? – Einwenig Mathematik PRT weitergedacht Zusammenfassung Literatur DirectX API und Demos
Einleitung - Anforderungen an Spiele Beleuchtungseffekte spielen bei der Synthese photorealistischer Bilder eine übergeordnete Rolle. Bisher: Phong Shading, Texturen (Lightmaps) + Simulation von Schatten etc. Physikalisch inkorrekt, da stark vereinfacht oder zu statisch Keine globalen Beleuchtungsmodelle PRT ist die Antwort Einleitung - Anforderungen an Spiele Spieler sollen das Gefühl haben Teil der virtuellen Welt zu sein. Hohe Anforderung an Realismus, z.B.: komplexe Szenen realistische Interaktion mit Objekten intelligentes Verhalten von Gegnern Soundeffekte Beleuchtungseffekte ...
Einleitung – Die Herausforderung (1) Simulation komplexer physikalischer Zusammenhänge erforderlich... Beleuchtungsumgebungen Wie berechnet man diese Effekte? Die Rendering Equation gibt Antworten. Meterial- eigenschaften Transporteffekte
Einleitung – Die Herausforderung (2) Die Rendering Equation (RE) ist eine math. Formalisierung der Beleuchtungsproblematik. Alle Beleuchtungsmodelle setzen Teile der RE um. Jedes Beleuchtungsmodell lässt sich an der RE messen. Ziel: Effiziente Umsetzung vieler Aspekte der RE Integral über Hemisphäre Vom Punkt p ausgehende Strahlung Radianz- funktion Transfer- funktion
Einleitung – Herausforderung (3) Echtzeitsysteme müssen drei Schwierigkeiten bewältigen: Komplexe Materialien (BRDF) Integration über alle Richtungen der Hemisphäre über einem Beleuchtungspunkt Reflektion und Verdeckung
Was ist PRT? Methode zur Simulation globaler Beleuchtungseffekte Trennt Beleuchtung und Transporteigenschaften Berechnet ohne Kenntnis von Lichtquellen Strahlungstransfer in einem Punkt offline Schattiert Objekte durch Kombination von Lichtquellen und vorberechneten Transportdaten Schatten, Color-Bleeding, Caustics Bewegliche Lichtquellen und Objekte Kompression durch Spherical Harmonics oder Haar Wavelets Gut für Simulation in Echtzeitumgebungen geeignet: Einfaches Skalarprodukt im diffusen Fall Vektor-Matrix-Multiplikation für spekularen Fall Area Lights und generelle Beleuchtungsumgebungen realistische weiche Schatten Performanz nicht abhängig von Anzahl der Lichtquellen
Grenzen von PRT – Was ist es nicht Arbeitet mit entfernten Lichtquellen; lokale Lichtquellen möglich aber teuer Annahme: Beleuchtung variiert bei entfernten Lichtquellen kaum Lokale Lichtquellen erfordern Multi-Sampling/Gradients Objekte nicht verformbar Animation von Objekten im allgemeinen schwierig, aber machbar Hier: Neighbourhood-Transfer: Großes Objekt beeinflusst nahe kleine Objekte (z.B. Terrain - Charakter), Interaktion in anderer Richtung problematisch. Nur niederfrequentes Licht effizient simulierbar
Die Idee Projektion von T und L auf orthonormale Basisfunktionen Beleuchtungsfunktion: Die Lichtquellen können als Funktionen aufgefasst werden. Transferfunktion: Die Antwort eines Objektes auf seine Beleuchtung kann als Funktion aufgefasst werden, die eingehende Strahlung auf ausgehende abbildet. Projektion von T und L auf orthonormale Basisfunktionen Da die Basisfunktionen orthonormal gewählt wurden läst sich das Integral als Skalarprodukt darstellen Als Basisfunktionen bieten sich Spherical Harmonics an SHs sind orthonormal SHs sind rotationsinvariant Keine Fluktuationen bei Animation der Lichtquelle Keine Aliasing Probleme
Basisfunktionen Funktionen lassen sich als Summe gewichteter Basisfunktionen darstellen (Projektion auf Basisfunktionen):
Orthogonal und Orthonormal Orthogonale Basis-Funktionen haben folgende Eigenschaft: Für die Untergruppe der orthonormalen Basisfunktionen gilt: c = 1
Der Clou Vektor t wird vorberechnet Vector l wird zur Laufzeit berechnet Effiziente Berechnung des Skalarprodukts auf Shadern Spekularer Fall abhängig von Blickrichtung Transfermatrix In Sachen Performanz: Licht ist niedrigfrequent Lichtquelle weit entfernt Beleuchtung variiert vernachlässigbar für verschiedene Punkte auf der Oberfläche 1
Neumann Expansion 0 mal Reflektiert 1 mal Reflektiert 2 mal Reflektiert Transportinformationen der direkten Beleuchtung und von n Bounces in einem Transfer-Vektor Unabhängig von der Beleuchtung Transporteffekte wie weiche Shatten, Color-Bleeding, Caustics sind aufwendig zu berechnen vorberechnet Im spekularen Fall eine Transfermatrix
PRT unter der Lupe Wie reflektiert ein Objekt eintreffende Strahlung auf sich selbst und seine Umgebung? Wie werden kleine Objekte in der Umgebung beeinflusst? Szenario: Self-Transfer: Isoliert betrachtetes Objekt O Neighbourhood-Transfer: Bewegliche/Neue Objekte R (hier nur Einfluss O → R) Spekulare Oberfläche Beleuchtung Lenv durch unendlich weit entferntes Licht (Environment Map), Aufgaben: Welche Strahlung verlässt Punkt p? Auf der Oberfläche? An einem freien Raumpunkt? Berechnung der Transfermatrizen?
Outgoing vs. Transfered incident Ziel ist es die Outgoing Radiance zu berechnen Aber wir wollen: Spekulare Effekte Outgoing Radiance ist abhängig von der Blickrichtung BRDF ist nur für den diffuse Komponente konstant Neighbourhood-Transfer: Wir wollen den Einfluss eines Objektes O auf ein anderes R zur Laufzeit berechnen Selbst im diffusen Fall reicht ein Vektor nicht aus, da die Normalen des Recievers R unbekannt sind Outgoing Radiance kann an diesen Punkten nicht vorberechnet werden Die Lösung: Transfered incident Radiance
Transfered Incident Radiance Beschreibt für jeden Punkt p der Szene (auf O, oder frei im Raum) die einfallende Strahlung aus allen Richtungen Unterscheidet sich von Lenv (Verdeckung, Reflektion) Was sieht Punkt p? – Oder wie läst sich Lenv durch eine andere Funktion maskieren? → Produkt Projektion Sphärische Funktion; für jeden Punkt p anders Neighbourhood-Transfer: Muss für freie Raumpunkte berechnet werden; dann Interpolation
Die Transfermatrix Projektion auf Basisfunktionen Abhängigkeiten linear! Formal: , Bekannt zur Laufzeit , wird berechnet. Wie? , ist gesucht
Die Transfermatrix Die ite Spalte von approximiert die Erscheinung der Szene, aus der Perspektive von p, wenn nur die ite Basisfunktion yi zur Beleuchtung eingesetzt wird! Die gesamte Beleuchtung ergibt sich aus der Linearkombination aller Basislichter. Vektor-Matrix-Multiplikation liefert := Das Licht von yi, welches p direkt oder indirekt beleuchtet. Projektion von auf die jte Basisfunktion von liefert Eintrag ji von T:
Einschub... Produkt Projektion... Zentrale Frage: Was sieht Punkt p? Anders formuliert: Mit welcher Funktion, lässt sich Lenv maskieren? Mathematisch: a(s): unbekannte Beleuchtungsfunktion b(s): bekannte Schattenfunktion c(s): Maskierte Beleuchtungsfunktion Gesucht linearer Operator, der Koeffizienten von a(s) auf Koeffizienten von c(s) abbildet
Transfermatrizen Wir können nun die Transfermatrix T0 für die direkte Beleuchtung berechnen und erhalten: Wie geht‘s weiter? – Neuman Expansion... Rekursion mit T0 als Start... Im Wesentlichen Analog zum einfachen diffusen Fall...
Grober Ablauf Berechnung der Transfermatrizen offline Berechnung von Lxfer zur Laufzeit mit Transfermatrizen Auswertung der BRDF Die Outgoing Radiance ergibt sich aus der Summe der Transfered Incident Radiance und der in p reflektierten Strahlung Berechnung der Strahlung, die Punkt p in Blickrichtung verlässt
Zusammenfassung Globale Beleuchtungseffekte für Echtzeit-Anwendungen Komplette Entkopplung von Transferfunktionen und Lichtquellen Offline Berechnung Projektion auf Basisfunktionen Spherical Harmonics Oder Haar Wavelets Transfermatrizen Self-Transfer und Neighbourhood-Transfer PRT und DirectX
Literatur Siggraph2005 Course: PRT – Theory and Practice [Sloan, Kautz, Lethinen] Precomputed Radiance Transfer for Real-Time Rendering in Dynamic, Low-Frequqncy Environments [Sloan, Kautz, Snyder] Spherical Harmonic Lighting: The Gritty Details [Green] DirectX SDK Dokumentation
Das wars vom ersten Teil... ? ? Vielen Dank für die Aufmerksamkeit... Fragen? Und zum Abschluss weiter zu DirectX und Demos... ?
DirectX und PRT Einfaches lokales Beleuchtungsmodell, Keine Schatten PRT liefert weiche Schatten
Subsurface Scattering mit PRT DirectX und PRT Subsurface Scattering mit PRT
DirectX API Offline: Source Radiance: Exit Radiance: ID3DXPRTEngine: Berechnet Transfer- Vektoren und Matrizen Source Radiance: D3DXSHEvalDirectionalLight D3DXSHEvalSphericalLight D3DXSHEvalConeLight D3DXSHEvalHemisphereLight Exit Radiance: Berechnung auf Vertex-/Pixelshader
DirectX SDK Live Demo... And Action...