22
Stefan Röttge Universität Stuttgart (VIS)

Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Embed Size (px)

Citation preview

Page 1: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Stefan Röttger Universität Stuttgart (VIS)

Page 2: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Überblick

1. Motivation2. Shadow Volumes [Crow77]3. Verfahren ohne Stencil Buffer4. Demonstrationsfilm

Page 3: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

MotivationShadow 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 ErsatzDAMIT: Lauffähig z.B. ab Voodoo 1 !

Page 4: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Shadow Volumes

Schritt 1: Szene rendern Z-Werte

Page 5: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Shadow Volumes

Vorderseite: +1

Schritt 2: Shadow Volume Seiten rendern

Rückseite: -1

Page 6: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Shadow Volumes

Vorderseite: ±0 (Tiefentest)Rückseite: ±0 (Tiefentest) = ±0

Page 7: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Shadow Volumes

Vorderseite: +1Rückseite: ±0 (Tiefentest) = +1

±0

Page 8: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Shadow Volumes

Vorderseite: +1Rückseite: -1 = ±0

±0+1

Page 9: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Shadow Volumes

±0+1±0

Page 10: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Shadow Volumes• Wiederholung mit allen schattenwerfenden

Objekten• Pixel mit Stencil Buffer Wert > 0 schwarz färben• Szene erneut rendern um ambienten

Beleuchtungsanteil hinzuzufügen• Oder Helligkeitswerte im Schatten halbieren

Page 11: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Verfahren ohne Stencil BufferIdee: 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)

Page 12: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Blendingfunktionen für *2, /2Farbwerte: 0 schwarz 1 weissweiss

Blendingfunktionen:

cdst=f*csrc + g*cdst

*2: f=cdst, csrc=1, g=1 cdst = cdst*1 + 1*cdst

/2: f=0, g=0.5 cdst = 0 + cdst*0.5

Page 13: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Zustand eines PixelsInitialisiere alle Pixel mit Farbwert 1/4

1/4 1/2 1

*2

/2

*2

/2

*2 (Clamping!)

„Eingabefolgen“:

Punkt in Shadow Volume: *2

Punkt vor Shadow Volume:

Punkt hinter Shadow Volume: *2 , /2

Page 14: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

„Normierung“ auf 0/1Nach dem Rendern aller Shadow Volumes:

1/4 1/2 1

*2

1/2

1/2

1

1

0

0

*2

Licht Schatten

Invert(c:=1-c)

Page 15: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Anwendung 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

Page 16: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Beispiel: Shadow Volumes

Page 17: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Beispiel: *2, Inv, *2

Page 18: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Beispiel: Fertiges Bild

Page 19: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Berechnung 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

Page 20: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Demonstrationsfilm

Page 21: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Zusammenfassung• 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

Page 22: Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm

Fin

Fragen?