Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering



Ähnliche Dokumente
Kapitel 4: Schattenberechnung

Seminar Game Development Game Computer Graphics. Einleitung

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

3.6 Schattenberechnung

Schattenwurf mit Perspective Shadow Maps

Computergrafik Universität Osnabrück, Henning Wenke,

Shadowing. Vortrag im Rahmen des PIXAR-Seminars, Juli Philipp Freyer

Verbesserung der Bildqualität

BlendaX Grundlagen der Computergrafik

Graphische Datenverarbeitung und Bildverarbeitung

Computergraphik Grundlagen

Rendering Grundlagen Autodesk Maya. Grundlagen. Version Ingo Clemens brave rabbit

(10) Deferred Shading

Lights & Cameras Grundlagen Autodesk Maya. Grundlagen. Version Ingo Clemens brave rabbit

Shader. Computer Graphics: Shader

Raytracing Modell Laufzeitoptimierungen Schnittalgorithmen Szenendatenstrukturen. Verbesserung der Bildqualität

Programmierpraktikum 3D Computer Grafik

Beleuchtungsmodelle und Shading

Die Welt der Shader. Fortgeschrittene Techniken III

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr.

Rendering: Lighting and Shading

Computer Graphics Shader

Programmierpraktikum 3D Computer Grafik

3D Programmierpraktikum: Schattenberechnung in Echtzeit

Visualisierung und Volumenrendering 2

Logarithmic Perspective Shadow Maps

Beleuchtung. in Computerspielen

4.7 Globale Beleuchtungsmodelle

HLSL PostProcess Shaders

Verbesserte Immersion in Stereoprojektionen anhand weicher Schatten, Tiefenunschärfe und Spiegelungen.

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

MF Breadcrumbs. Sergej Schefer & Fabian Marx

OpenGL und die Fixed-Function-Pipeline

Echtzeit Videoverarbeitung

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni

Hot Topics. 18. Vorlesung

Graphische Datenverarbeitung Visualisierungstechniken. Prof. Dr. Elke Hergenröther

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis

0 Einführung. Computergrafik. Computergrafik. Abteilung für Bild- und Signalverarbeitung

Christina Nell. 3D-Computergrafik

Postprocessing. Algorithmen für Computerspiele. Alexander Martin 19. Juli 2010

Seminar Computerspiele Räumliche Datenstrukturen. Ralf Pramberger

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung. Vorlesung vom

Volumenakquise. Vortrag von Benjamin Gayer

Beleuchtung Schattierung Rasterung

Teil 8: Ray Tracing. Ray Tracing Einleitung. Beleuchtung, inkl. Schatten, Reflexionen

Computergrafik 2008 Oliver Vornberger. Kapitel 19: Texturing

5 Mapping-Techniken. 5.1 Motivation


Computergrafik Universität Osnabrück, Henning Wenke,

Aktuelle Grafikleistungen

Photon-Mapping. University of Bonn & GfaR mbh

7 Blender Intern Renderer

Beschleunigungen auf Szenenebene

Environment Mapping v 1.1

Rendering. (illumination/shading) Beleuchtungsmodelle. Schattierung von Polygonen. Lokale Beleuchtungsmodelle

Adaptives Displacement Mapping unter Verwendung von Geometrieshadern

Global Illumination: Raytracing. Die drei Reflexionstypen. ideal diffus (Lambertian) ideal reflektierend. richtungsabhängig diffus (Phong)

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung

Echtzeitfähige Schatten in Mixed Reality-Umgebungen. Diplomarbeit

3D Programmierpraktikum: OpenGL Shading Language (GLSL)

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker

Softwareprojekt Spieleentwicklung

Computergrafik 2010 Oliver Vornberger

Computergrafik 1 Beleuchtung

Instant Radiosity. 14. Vorlesung. Thorsten Grosch

Soft Shadow Volumes. Ilja Kipermann. vorgelegt von. Studienarbeit. im Studiengang Computervisualistik

Photonik Technische Nutzung von Licht

Übungsstunde 7 zu Computergrafik 1

(13) Hot Topics. Vorlesung Computergrafik T. Grosch

3.1 Szene vorbereiten

Vergleich von Forward und Deferred Rendering

Spieleprogrammierung mit DirectX und C++

Final Gathering und Radiance Interpolation für indirekte Beleuchtung auf Grafik-Hardware

Computergrafik 1 Übung

Optimierungsalgorithmen

(6) Fortgeschrittene GPU- Programmierung

Entwicklung eines Systems zur dynamischen Beleuchtung von 3D-Szenen

OpenGL ES 2.0. OpenGL ist eine Bibliothek zur Ansteuerung von Grafikhardware

Beleuchtung. Matthias Nieuwenhuisen

Animation und Multimedia

Ray Tracing. 2. Ray Tracing-Prinzip und -Algorithmen. 3. Schnittpunkt- und Normalenberechnung

computer graphics & visualization

Photorealistische Computergrafik. Thorsten Grosch

RTG V1.0. Dipl.-Ing. (FH) Sandro Gutknecht

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

Computergrafik Universität Osnabrück, Henning Wenke,

Atlas-basierte globale Beleuchtung im Bildraum. Studienarbeit

Rendering. Rendern (Umsetzung oder Übertragung) Ursprüngliche Rendergleichung

Einführung Augmentierte Bildsynthese

Trainingsangebote. Ich biete für die aufgelistete Software im Bereich Visualisierung, Schulungen an.

1 Transformationen. 1.1 Transformationsmatrizen. Seite 1

3D-Modellierungsprogramme

Geometrische Primitive und Hidden Surface Removal

Überblick Echtzeit-Rendering. Uwe Domaratius

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Inhaltsverzeichnis. V Vorwort 17. V.1 An wen richtet sich dieses Buch? 18. V.2 Ansprüche an den Computer 18. V.4 Bildergalerie 19.

Advanced Rendering Interior Szene

Transkript:

Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering

Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013

Schatten bringen viel Realismus in eine Szene Schatten sind visuelle Hilfen für die Raumwahrnehmung Schatten für Effekte wie z.b. Spots Keine Beleuchtung Mit Beleuchtung Mit Schatten

Wichtige Techniken kennenlernen die Schatten in Echtzeitanwendungen erlauben Grundprinzip und Funktionsweise von Shadow Maps verstehen Einfluss von Filtern verstehen

Fixed Pipeline: glenable ( GL_LIGHTING ) Leider keine Schatten glenable ( GL_SHADOWING ) Gibt s (leider) nicht OpenGL (wie auch DirectX) sind auf ein lokales Beleuchtungsmodell ausgerichtet Schatten sind ein globales Beleuchtungsproblem (welche Teile eines Objekt ist im Schatten von anderen Objekten?)

A Kernschatten (Umbra) B Halbschatten (Penumbra) Es gibt viele weitere Effekte von Lichtanteilen die reflektiert, refraktiert oder absorbiert werden Global Illumination Ambient Occlusion, Photonmapping, Raytracing, Radiosity

Schatten für Echtzeitanwendungen werden normalerweise mit Deferred Rendering implementiert (siehe vorherige Vorlesung) D.h. in einem ersten Schritt werden Informationen gesammelt die dann für die Beleuchtungsberechnung in einem zweiten Schritt verwendet werden

Jedes Polygon erzeugt ein Schattenvolumen (Pyramidenstumpf) Für jeden Sichtstrahl wird ein Zähler inkrementiert beim Eintreten in das Schattenvolumen und dekrementiert beim Austreten. Zonen mit einem Zähler == 0 sind beleuchtet,!= 0 sind im Schatten Wie kann man das erreichen ohne Ray Tracing?

Lösung: Stencil Buffer verwenden Extrudierte Sahdow Volumes zeichnen mit Front Facing polygons +1 Back Facing polygons 1 Verfahren 1. Rendern der Szene um Farb und Tiefenwerte zu erhalten 2. Rendern der Shadow Volumes 3. Kombinieren der Resultate

Einfaches Verfahren Alles aus der Kameraperspektive gezeichnet Präzise, geometrische Schatten Braucht Szenen Geometrie Fillrate (Zeichnen der Schattenvolumen)

Szene wird von der Kamera aus betrachtet Blickrichtung Schatten hat etwas mit der Position der Lichtquelle zu tun Lichtrichtung Schatten hat etwas mit Objektverdeckung zu tun Depth Buffer Wie könnte man daraus Schatten «bauen»?

Shadow Map

Zwei Schritt Verfahren 1. Erzeugen der Shadow Map 2. Verwenden der Shadow Map in der Szene um Fragmente im Schatten abzudunkeln

Rendern der Szene aus der Lichtrichtung Frustum muss Kamerafrustum vollständig beinhalten Nur Depth Buffer von Interesse nur Geometrie ohne Materialen und Beleuchtung etc. zeichnen Front Face Culling und / oder Polygon Offset verwenden um Artefakte auf den Beleuchteten Teilen zu vermeiden

L V Licht Koordinaten L P Shadow Map Clip Koordinaten / w Viewport transform Welt Koordinaten C V Kamera Koordinaten C P Kamera Clip Koordinaten / w Viewport transform L V L P C V C P Licht View Matrix Licht Projektions Matrix Kamera View Matrix Kamera Projektions Matrix

Im Fragment Shader müssen wir für Kamera Koordinaten die Textur Koordinate in der Shadow Map finden 1. Von Kamera zu Welt Koordinaten w = C V -1 * c 2. Von Welt Koordinaten zu projizierten Licht Koordinaten l = L P * L V * w 3. Da l zwischen [ 1..1] liegt müssen wir sie noch auf [0..1] skalieren und verschieben um Texturkoordinaten zu bekommen

Wie können wir das Verfahren verbessern? «Viel hilft viel» Shadow Map Auflösung vergrössern Unschöne Ränder: Weiche Schatten «Penumbra» Filtern

512x512, GL_NEAREST 512x512, GL_LINEAR 2048x2048, GL_LINEAR 4096x4096, GL_LINEAR

Einfaches Prinzip Keine Geometrie Daten nötig (funktioniert z.b. auch mit Alphamasken) Schnell (Szene muss nur pro Lichtquelle zusätzlich einmal gezeichnet werden) Ungeeignet für grosse Szenen (immense Shadow Map für gute Auflösung) Unschöne Ränder

Transformieren einer Region im Viewport in die Shadow Map Zufälliges Auslesen (Sampling) der Shadow Map Verschattung = Anteil der Samples die in der Region liegen Aufwand steigt mit Anzahl der Samples

1x1 Region 15x15 Region

Idee: Multisampling vermeiden, Filter der GPU verwenden Wie bei PCF interessiert uns der Zusammenhang der Shadow Map Werte einer Region und des Tiefenwerte des Fragments das wir zeichnen (t) Statt Shadow Map Anteile (PCF) betrachtet man die Verteilung der Tiefenwerte Die Tschebyscheff Ungleichung liefert uns die Wahrscheinlichkeit bei bekanntem Mittelwert und Varianz ob ein Wert (t) auftritt oder nicht Mittelwert: μ = E(x) Berechnung mit GPU: Mip Mapping, Blur, GLSL Shader, Varianz: σ 2 =E(x 2 ) E(x) 2 Dazu speichern wir (x, x 2 ) z.b. in 2 Farbkanälen einer Float Textur

PCF 15x15 ca. 50fps VSM 15x15 > 60fps PCF 50x50 ca. 5fps VSM 50x50 > 60fps

Gewünscht: Bessere Shadow Map Auflösung nahe bei der Kamera Bessere Ausnutzung des Shadow Map Frustum

Idee: Mehrere Licht Frusta optimieren für aktuelle Kameraposition Ähnliche Verfahren: Perspective Shadow Maps, Light Space Perspective Shadow Maps

1 Shadow Map 2048x2048 4 Shadow Maps 1024x1024 4 Shadow Maps 1024x1024 4 Shadow Maps 1024x1024 Gefiltert

Vorteile Shadow Volumes Präzise, geometrische Schatten Unabhängig von der Abmessung der Szene Shadow Maps Einfaches Prinzip Keine Geometrie Daten nötig (funktioniert z.b. auch mit Alphamasken) Schnell (Szene muss nur einmal zusätzlich pro Lichtquelle gezeichnet werden) Nachteile Braucht Szenen Geometrie (funktioniert nicht Alphamasken) Nur begrenzt brauchbar für Echtzeitanwendungen Ungeeignet für grosse Szenen (Auflösung der Shadow Map) Unschöne (scharfe) Ränder Variance Shadow Maps Ähnlich gute Filterung wie PCF GPU verwenden für Statistik Effizient Mehrkanal Float32 Texturen (wegen Depth 2 ) sind z.b. Extensions in OpenGL ES Cascade Shadow Maps Kamera abhängige Auflösung Sehr gute Resultate auch bei grossen Szenen Kann einfach mit Filterung kombiniert werden Photonmapping, Raytracing, Radiosity, Beste bekannte Verfahren für Global Illumination Viele Lichteffekte (nicht nur Schatten) werden miteinbezogen Idealerweise implementiert mit 3D Texturven Szene muss pro Shadow Map neu gezeichnet werden Sehr Rechenaufwendig Noch nicht brauchbar für Echtzeitanwendungen

Wikipedia GPU Gems ( Part II: Lighting and Shadows ) http://http.developer.nvidia.com/gpugems/gpugems_part02.html Shadow Volumes: https://developer.nvidia.com/content/gpu gems 3 chapter 11 efficient androbust shadow volumes using hierarchical occlusion Shadow Mapping: Lance Williams Casting Curved Shadows on Curved on Curved Surfaces (http://design.osu.edu/carlson/history/pdfs/shadowmaps.pdf) Variance Shadow Maps: http://www.punkuser.net/vsm/vsm_paper.pdf Cascade Shadow Maps + Filtering: http://developer.download.nvidia.com/sdk/10/opengl/src/cascaded_shadow _maps/doc/cascaded_shadow_maps.pdf