Title: Kein Folientitel
1- Universität Stuttgart (VIS)
2Überblick
- 1. Motivation
- 2. Shadow Volumes Crow77
- 3. Verfahren ohne Stencil Buffer
- 4. Demonstrationsfilm
3Motivation
- Shadow Volumes
- dynamische Schattenberechnung in Echtzeit
- Nutzung der Grafikhardware (Stencil Buffer)
- Problem Einschränkung auf neuste
- PC Grafikkarten
- (z.B. kein Stencil Buffer auf der Voodoo 3)
- NEU Benutzung des Screen Buffers als Ersatz
- DAMIT Lauffähig z.B. ab Voodoo 1 !
4Shadow Volumes
Schritt 1 Szene rendern ? Z-Werte
5Shadow Volumes
Vorderseite 1
Rückseite -1
Schritt 2 Shadow Volume Seiten rendern
6Shadow Volumes
Vorderseite 0 (Tiefentest) Rückseite 0
(Tiefentest)
? 0
7Shadow Volumes
0
Vorderseite 1 Rückseite 0 (Tiefentest)
? 1
8Shadow Volumes
1
0
Vorderseite 1 Rückseite -1
? 0
9Shadow Volumes
0
1
0
10Shadow Volumes
- Wiederholung mit allen schattenwerfenden Objekten
- Pixel mit Stencil Buffer Wert gt 0 schwarz färben
- Szene erneut rendern um ambienten
Beleuchtungsanteil hinzuzufügen - Oder Helligkeitswerte im Schatten halbieren
11Verfahren ohne Stencil Buffer
- Idee Die Schattenmaske wird im Screen Buffer
(RGB- oder Alpha-Kanal) berechnet, anstatt im
Stencil Buffer - Problem dstColor dstColor -1 nicht
realisierbar - Lösung Anstatt 1 2 (verdopple Farbwert)
- Anstatt -1 /2 (halbiere Farbwert)
12Blendingfunktionen für 2, /2
Farbwerte 0 ? schwarz 1 ? weiss
Blendingfunktionen cdstfcsrc gcdst 2
fcdst, csrc1, g1 ? cdst cdst1
1cdst /2 f0, g0.5 ? cdst 0 cdst0.5
13Zustand eines Pixels
- Initialisiere alle Pixel mit Farbwert 1/4
2
2
1/4
1/2
1
2 (Clamping!)
/2
/2
Eingabefolgen Punkt in Shadow
Volume 2 Punkt vor Shadow Volume ? Punkt
hinter Shadow Volume 2 , /2
14Normierung auf 0/1
Nach dem Rendern aller Shadow Volumes
1/4
1/2
1
2
1/2
1
Invert (c1-c)
1/2
0
2
1
0
Licht
Schatten
15Anwendung der Schattenmaske
- Multipliziere s/w Schattenmaske mit Bild
- Rendern der Szene, mit cdst cdst csrc
- Szene erneut rendern um ambienten
Beleuchtungsanteil hinzuzufügen mit cdst cdst
csrc - Oder alternativ die Werte im Schatten halbieren
mit - Normierung auf 0.5/1 und cdst cdst csrc
16Beispiel Shadow Volumes
17Beispiel 2, Inv, 2
18Beispiel Fertiges Bild
19Berechnung im Alpha Kanal
- Alternativ kann kann die Schattenmaske auch im
Alpha Kanal berechnet werden - Angewendet wird die Schattenmaske durch
Umkopieren des Alpha Kanals in eine gleich große
Textur - Vorteil Berechnung der Schattenmaske mit
niedrigerer Auflösung möglich ? Schattenmaske
wird schneller rasterisiert - Szene muss bei Halbierung der Schattenwerte nicht
noch einmal gerendert werden
20Demonstrationsfilm
21Zusammenfassung
- Effiziente Schattenberechnung auch ohne Stencil
Buffer möglich - Schattenmaske wird im Screen Buffer (oder im
Alpha Kanal) aufgebaut - Verwende 2, /2 anstatt 1, -1
- Durch anschließendes Umkopieren in eine Textur
kann die Schattenmaske auch in kleineren
Auflösungen berechnet werden - Wende die Schattenmaske nach Normalisierung an
ambiente Beleuchtung, schwarze Schatten,
Helligkeit halbieren
22Fin