Shadow Mapping

Shadow Mapping
Szene mit Shadow mapping
Szene ohne Schatten

Shadow Mapping ist eine Methode der Computergrafik, um Schattenwurf darzustellen. Das Konzept wurde 1978 im Paper "casting curved shadows on curved surfaces" von Lance Williams[1] vorgestellt. Shadow Maps werden sowohl für Offlinerendering als auch für Echtzeitanwendungen benutzt.

Beim Shadow Mapping werden Schatten generiert, indem getestet wird, ob ein Pixel von einer Lichtquelle aus sichtbar ist. Dabei wird zunächst die sogenannte Shadow Map erzeugt. Diese ist eine aus Sicht der Lichtquelle erzeugte Tiefenkarte. Diese enthält Informationen über den geringsten Abstand von Objekten einer Szene zur Lichtquelle (Z-Buffer). Durch den Vergleich des Abstandes des zu rendernden Objektes zur Lichtquelle und dem entsprechenden Punkt in der Shadow Map kann der Schattenwurf berechnet werden.

Inhaltsverzeichnis

Funktionsprinzip

Das Rendern einer Szene mit Schatten unter Zuhilfenahme von einer Shadow Map geschieht im Wesentlichen in zwei Schritten. Als erstes wird die Szene aus der Sicht des Lichts gerendert und für jedes Sichtbare Objekt die Tiefeninformation gespeichert. Anschließend wird die Szene normal gerendert, wobei für jeden Pixel mit Hilfe der Shadow map bestimmt wird ob er für das Licht sichtbar ist. Falls dies nicht der Fall ist, wird das Pixel schattiert gerendert.

Diese Technik bietet weniger genaue Resultate als Schattenvolumen, ist aber im allgemeinen schneller in der Berechnung, zudem können Shadow Maps ohne Zuhilfenahme des Stencilbuffers realisiert werden und erlauben das Zeichnen von weichen Kanten.

Algorithmus

Zeichnen der Shadow Map

Szene von der Position des Lichts aus gesehen
Tiefenkarte der Szene aus der Position des Lichts

Als erstes wird die Tiefenkarte für jedes Licht erstellt. Für Punktlichtquellen sollte dazu eine perspektivische Projektion verwendet werden, während für gerichtete Lichtquellen mit parallelen Strahlen (wie zum Beispiel bei der Sonne) eine orthogonale Projektion geeignet ist. Dazu wird die Szene von der Position des Lichts aus gerendert und die Tiefeninformation gespeichert. Häufig wird die Tiefenkarte als Textur im Speicher der Grafikkarte gespeichert. Damit dieser Rendervorgang möglichst effizient abläuft, kann sowohl die Licht- als auch die Farbberechnung weggelassen bzw. abgeschaltet werden.

Jedes Mal, wenn sich die Position eines Lichts oder eines Objekts in der Szene ändert, müssen die Tiefenkarten neu berechnet werden.

Schattieren der Szene

Visualisierung der Tiefenkarte auf die Szene projiziert
Fehlgeschlagene Tiefentests
Endgültige Szene mit ambienten Schatten.

Als zweiter Schritt wird die Szene aus der Sicht der Kamera gerendert und die Shadow Map auf die einzelnen Pixel angewendet. Dieser Schritt besteht im Wesentlichen aus drei Operationen. Der Erste ist, die relativen Koordinaten eines Objekts im Vergleich zur Kamera auf die entsprechenden relativen Koordinaten vom Licht aus gesehen zu transformieren. Als Zweites werden die Koordinaten mit der Tiefenkarte verglichen und als Letztes wird das Objekt als beleuchtet oder schattiert gezeichnet.

Uniform Shadow Mapping

Beim Zeichnen der eigentlichen Szene kann für jeden Pixel die Entfernung zur Lichtquelle mit der Entfernung verglichen werden, die für diese Stelle in der Tiefentextur steht. Falls die Entfernung des Pixels größer ist als die in der Textur gespeicherte Entfernung, liegt der Pixel im Schatten.

Bei globalen Lichtquellen wie der Sonne ist das Gebiet, über das sich die Tiefentextur erstreckt, sehr groß. Die räumliche Auflösung des Schattens ist demzufolge sehr gering. Die gleichförmige Verteilung des Texturraums über das betroffene Gebiet führt außerdem dazu, dass die vom Betrachter wahrgenommene Schattenauflösung in der Nähe sehr niedrig ist, während in der Entfernung eine unnötig hohe Auflösung erreicht wird.

Perspective Shadow Mapping (PSM)

Perspective Shadow Mapping erweitert die Projektionsmatrix des Lichtes um eine perspektivische Komponente der Betrachterprojektion. Damit wird der vorher quadratische Ausdehnungsbereich der Schattentextur auf ein Trapez verformt, das seine schmale Seite beim Betrachter hat und damit dort sehr viel mehr Texel pro Maßeinheit bietet als in der Ferne. Die Methode arbeitet gut für Szenarien, in denen die Blickrichtung des Betrachters größtenteils senkrecht zur Lichtrichtung ist. Das Verfahren hat aber einige numerische Totstellen, in denen die Projektionsmatrix ungültige Werte annimmt oder den Schatten invertiert.

Light Space Perspective Shadow Mapping (LiSPM)

Light Space Perspective Shadow Mapping (benutzt zum Beispiel in SpellForce 2) ist eine Erweiterung der PSM-Methode, die durch geänderte Formeln den Grad der perspektivischen Verzerrung der Lichtprojektion frei wählbar gestaltet. Bei einem senkrechten Blickwinkel zur Lichtrichtung entspricht diese Methode der PSM-Methode. Je paralleler Sichtrichtung und Lichtrichtung werden, desto geringer wird die perspektivische Verzerrung, bis die Methode bei Parallelität auf normales Uniform Shadow Mapping zurückfällt. Diese Methode verhindert die Totstellen von PSM. Das optische Ergebnis ist aber immer noch stark von der Blickrichtung abhängig.

Cascaded Shadow Mapping (CSM)

Cascaded Shadow Mapping (benutzt zum Beispiel in 3DMark2005 und 3DMark2006) verhindert die ungleiche Verteilung der Schattentexel-Dichte durch Einsatz mehrerer geschachtelter Shadow Maps für verschiedene Entfernungen[2]. Jede einzelne Shadow Map wird gleichförmig projiziert oder kann mit einer der obigen Varianten perspektivisch projiziert werden. Die Methode ist leicht zu implementieren und liefert flexibel einstellbare Schattenqualität für alle Entfernungen, benötigt aber ein Vielfaches der Rechenzeit und des Grafikkarten-Speichers anderer Methoden.

Dual Paraboloid Shadow Mapping (DPSM)

Die traditionelle Technik des Shadow Mapping verwendet nur eine Tiefenkarte. Möchte man aber ein in mehrere Richtungen scheinendes Licht, z.B. ein Punktlicht realisieren, reicht die traditionelle Methode nicht mehr aus. So kam man im Laufe der Zeit auf Dual Paraboloid Shadow Mapping, eine Technik, bei der man den Raum um die Lichtquelle auf zwei Paraboloide, projiziert, die zwei Tiefenkarten entsprechen. Diese Methode ist annähernd so performant wie das traditionelle Shadow Mapping, hat aber auch Nachteile, die hauptsächlich mit der Verzerrung durch die Projektion auf das gewölbte Paraboloid zusammenhängen. Durch geeignete Gegenmaßnahmen lassen sich diese aber auf ein Minimum reduzieren.

Dual Paraboloid Mapping wurde zum ersten Mal 1998 in der Publikation "View-independent environment maps" von Wolfgang Heidrich und Hans-Peter Seidel [3] beschrieben.

Weitere Methoden

Es gibt weitere Möglichkeiten, Shadow Maps verbessert darzustellen, allerdings eignen sie sich nicht zur Berechnung in Echtzeit. Sie arbeiten durch Segmentierung der Szene und Zuordnung verschieden großer Schattentextur-Fragmente zu diesen Segmenten nach verschiedenen Qualitätskriterien. Es gibt auch Echtzeit-Varianten, aber die Aufteilung der Szene in Echtzeit ist problematisch und führt zu sichtbaren Sprüngen in der Schattenqualität im Bild.

Weblinks

Einzelnachweise

  1. Lance Williams (Computer Graphics Lab, New York Institute of Technology, Old Westbury, New York): Casting curved shadows on curved surfaces. In: ACM SIGGRAPH Computer Graphics: Volume 12, Issue 3. 1978, S. 270-274, abgerufen am 5. April 2010 (PDF, 956 KB, ISSN 0097-8930).
  2. Rouslan Dimitrov: Cascaded Shadow Maps. NVIDIA Corporation, 2007, abgerufen am 5. April 2010 (PDF, 1,58 MB).
  3. Wolfgang Heidrich (Computer Graphics Group, University of Erlangen) und Hans-Peter Seidel (Computer Graphics Group, University of Erlangen): View-independent environment maps. In: ACM SIGGRAPH Computer Graphics. 1998, abgerufen am 25. Mai 2010 (PDF, ISBN:0-89791-097-X).

Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Shadow mapping — or projective shadowing is a process by which shadows are added to 3D computer graphics. This concept was introduced by Lance Williams in 1978, in a paper entitled Casting curved shadows on curved surfaces . Since then, it has been used both in… …   Wikipedia

  • Shadow volume — Example of Carmack s stencil shadowing in Doom 3. Shadow volume is a technique used in 3D computer graphics to add shadows to a rendered scene. They were first proposed by Frank Crow in 1977[1] as the geometry describing the 3D shape of the… …   Wikipedia

  • Mapping — Der Begriff Mapping (zu deutsch Abbildung oder Kartierung, wörtlich eine Karte machen) hat in den letzten Jahrzehnten eine Reihe zusätzlicher Bedeutungen erhalten. Zum ursprünglichen Inhalt – ein begrenztes Gebiet kartografisch erfassen; erhobene …   Deutsch Wikipedia

  • Shadow and highlight enhancement — refers to an image processing technique to correct exposure. Images with over and under exposed areas can be recovered with the Shadow/Highlight tool in Photoshop. Though this tool can be used to darken overexposed highlights, it is used… …   Wikipedia

  • Projective texture mapping — is a method of texture mapping that allows a textured image to be projected onto a scene as if by a slide projector. Projective texture mapping is useful in a variety of lighting techniques and it s the starting point for shadow… …   Wikipedia

  • Photon mapping — In computer graphics, photon mapping is a two pass global illumination algorithm developed by Henrik Wann Jensen that solves the rendering equation. Rays from the light source and rays from the camera are traced independently until some… …   Wikipedia

  • S.T.A.L.K.E.R.: Shadow of Chernobyl — S.T.A.L.K.E.R. redirects here. For the prequel, see S.T.A.L.K.E.R.: Clear Sky. For the sequel, see S.T.A.L.K.E.R.: Call of Pripyat. S.T.A.L.K.E.R.: Shadow of Chernobyl The European cover art for S.T.A.L.K.E.R.: Shadow of Chernobyl …   Wikipedia

  • Cube mapping — The lower left image shows a scene with a viewpoint marked with a black dot. The upper image shows the net of the cube mapping as seen from that viewpoint, and the lower right image shows the cube superimposed on the original scene. In computer… …   Wikipedia

  • Tone mapping — is a technique used in image processing and computer graphics to map a set of colours to another; often to approximate the appearance of high dynamic range images in media with a more limited dynamic range. Print outs, CRT or LCD monitors, and… …   Wikipedia

  • O-r-mapping — Objektrelationale Abbildung (englisch object relational mapping, ORM) ist eine Technik der Softwareentwicklung, mit der ein in einer objektorientierten Programmiersprache geschriebenes Anwendungsprogramm seine Objekte in einer relationalen… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”