Projezierte Shadowmaps: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
(Vor- und Nachteile)
Zeile 24: Zeile 24:
 
<li>Back-Projection (lässt sich jedoch durch Clipping-Planes vermeiden)</li>
 
<li>Back-Projection (lässt sich jedoch durch Clipping-Planes vermeiden)</li>
 
<li>Darstellungsfehler sobald Teile eines schattenwerfenden Objektes größer sind als das Frustum der Lichtquelle</li>
 
<li>Darstellungsfehler sobald Teile eines schattenwerfenden Objektes größer sind als das Frustum der Lichtquelle</li>
 +
<li> Bei Punktlichtern mit Schatten Cubemaps muß bis zu sechs Mal gerendert werden.
 
</ul>
 
</ul>

Version vom 3. September 2004, 16:51 Uhr

Konzept

Um die Szene zu schattieren, werden ihre Tiefenwert vom Blickpunkt der schattenwerfenden Lichtquelle aus in eine Textur gerendert. Danach wird diese Textur mit entsprechenden Fragmentvergleichen auf die Szene projeziert.

Grundlegende Funktionsweise

1. Tiefenpuffer-Inhalt der Szene vom Blickpunkt der Lichtquelle aus in eine Textur rendern
2. Passenden Fragmentvergleich setzen (GL_TEXTURE_COMPARE_MODE_ARB/GL_TEXTURE_COMPARE_FUNC_ARB)
3. Automatische Texturkoordinaten-Generierung aktivieren (TexGen)
4. Szene nun mit projezierter Tiefentextur rendern

Vor- und Nachteile

Positiv :

  • Keine Kenntnis der zugrundeliegenden Szenengeometrie nötig
  • Selbstschattierung als kostenloses Feature
  • Kaum CPU-Interaktion nötig

Negativ :

  • Aliasing, da selbst sehr hochaufgelöste Tiefentexturen meist nicht ausreichend sind
  • Unterstützt eigentlich nur direktionale Lichtquellen, während omnidirektionale Lichtquellen umständlich zu implementieren sind
  • Benötigt einen Polygonoffset um Selbstschattierung korrekt darzustellen. Der richtige Offset ist jedoch je nach Implementation unterschiedlich.
  • Back-Projection (lässt sich jedoch durch Clipping-Planes vermeiden)
  • Darstellungsfehler sobald Teile eines schattenwerfenden Objektes größer sind als das Frustum der Lichtquelle
  • Bei Punktlichtern mit Schatten Cubemaps muß bis zu sechs Mal gerendert werden.