Post on 05-Apr-2015
Seminar „3D Animation und Visualisierung“
Technische Universität Darmstadt
SS2006 - Andreas Schwarzkopf
GPU Simulation and Renderingof Volumetric Effects
for Computer Games and Virtual EnvironmentsJens Krüger, Rüdiger Westermann
Inhalt
1. Motivation & Overview Motivation, Themenüberblick, Begriffe
2. Grundlagen Physik, Grids, Rückkopplung, Einfaches Beispiel
3. GPGPU GPU, SIMD, Grafikpipeline, Shadinglanguages
4. Contribution „Templates“ zur Simulationssteuerung
5. Ergebnisse & Bewertung Leistungsmessungen, Pro & Contra, Bewertung, Ausblick
1
1. Motivation & Overview 1. Motivation & Overview
1.1 Motivation
1.2 Themenüberblick
1.3 Begriffe
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
2
1.1 MotivationEinsatzrahmen der vorgestellten Techniken
Simulation von FluidenUmfasst Effekte wie Rauch, Gas, Dampf, Wolken, Wasser, Nebel, Feuer, Explosionen, ...
Simulation vs. Interaktion
Anwendungsgebiet„Need for interactive Framerates“ Spiele, VR
„Skalenproblem“, Molekülebene
Effekt muss in seiner Gesamtheit erfasst werden
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
3
1.2 Themenüberblick Fluid Simulation (2D)
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
GPU Based Particle Engine
Spherical Interpolation
Volume Rendering
4
1.3 Begriffe „Themengebiet“: CFD
Computational Fluid Dynamics
deutsch: „Numerische Strömungsmechanik“
Konkretes Ziel: Annähernde Lösung der 3D-NSE
„Physikalisches Hilfsmittel“: NSE Navier-Stokes-Equations, (bzw. deutsch NSG)
beschreiben newtonsches Fluid, mehr dazu gleich...
im weiteren Vortrag immer wieder: „Grid”“Gitternetz”, äquidistant, 2D: O(n²) / 3D: O(n³)
diskretisiert den Raum für numerische Lösungen
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
5
2. Grundlagen 2. Grundlagen
2.1 Physikalische Grundlagen, NSE
2.2 NSE & Grid
2.3 Beispiel: Einfache Partikelengine
2.4 Rückkopplung in Grids
2.5 Linear Sphärische Extrusion
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
6
2.1 Physikalische GrundlagenNSE, Navier-Stokes-Gleichungen
System von nichtlinearen partiellen Differentialgleichungen 2. Grades
Sie beschreiben ein Newtonsches Fluid„Newtonsch“ = Konstante Viskosität
(Geschwindigkeit, Druck) als f(Ort, Zeit)
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
7
2.2 NSE & GridEin NSES für jedes Problem ein NSES...Impulserhaltung / Impulssatz für Newtonsche Fluide
+ Kontinuitätsgleichungen (Masseerhaltung)
+ Volumenkräfte (z.B. innere und äußere, z.B. Gravitation)
+ Trägheits- und Zähigkeitskräfte
+ thermodynamische Veränderungen
+ ...
= „Aufwändiges Problemchen“ mit allen Finessen einernumerischen Lösung von Gleichungssystemen
- Mehrschrittig, Vereinfachungen, Starke Randbedingungen, Abstraktionen, Ungenauigkeiten führen zu Instabilitäten
- Hier insbesondere: „Tradeoff“ Gridbasierter Lösungen
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
8
2.3 Beispiel: Partikelengine kleine, selbstgebaute Partikelengine
Visualisiert Partikelfluss auf einem Grid
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
Anwendung
9
2.4 Rückkopplung in Grids 1. Druck Druckfeld
2. Geschwindigkeit Geschwindigkeitsfeld
3. Partikel (Advektion) Partikel-/Advektionsfeld
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
10
2.5 Linear Sphärische Extrusion 2D – 3D Extrusion
„Gegeben: 2 Scheiben – Gesucht: Explosion“
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung11
3. GPGPU 3. GPGPU
3.1 Bedeutung der modernen GPU
3.2 Grafikpipeline, Shadinglanguages
3.3 GPGPU, SIMD / Vektorprozessor
3.4 Probleme „auf GPU transferieren“
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
12
3.1 Bedeutung der modernen GPU
Geschwindigkeit und Parallelität
GPU als (programmierbarer) Spezialprozessor
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
13
3.2 Grafikpipeline, Shadinglanguages
Beispiel: NVIDIA GeForce 6800 Ultra 6 Vertexprozessoren (SIMD oder MIMD Parallelisierung)
16 Fragmentprozessoren (SIMD)
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
14
3.3 GPGPU, SIMD / Vektorprozessor
GPGPU – General Purpose Computing GPU
PCI-Express = 4GB/s in beide Richtungen!
Rechnerarchitektur: „Vektorrechner“SIMD (Single Instruction Multi Data)
Beispiel: NVIDIA 7800XT 65.000 Shaderinstruktionen („ASM-
like“)
auf jeder der 24 Pipelines!
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
15
3.4 Probleme auf GPU transferieren
CPU GPU
Probleme müssen „übersetzt“ werden– Eingabe: Texturen „Read-Only Memory“– Verarbeitung: Programmierbare Shadereinheiten– Ausgabe: „Bild“
GRID und Bild(x,y,z) = Werte-Tripel = RGB
bzw. (x,y,z,w) auf RGBA
2D Vektorfeld Textur/Bild
Vektor/Feldoperationen Bildoperationen
GPU sehr gut geeignet für Vektorfeldverarbeitung!
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
16
4. Contribution 4. Contribution
4.1 „Templates“ zur Simulationssteuerung
4.2 Templates: Erzeugung und Anwendung I
4.3 Templates: Erzeugung und Anwendung II
4.4 Strukturen und Frequenzen
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
17
4.1 „Templates“ zur Simulationssteuerung Erinnerung:
Druck Geschwindigkeit Flussfeld
Rückkopplung ...
Physische Feststellung: Änderungen im Druck schlagen sich in geometrisch ähnlichen Geschwindigkeitsphänomenen nieder
Ebenso: Strukturen im Geschwindigkeitsfeld bestimmen das Aussehen des Flusses
Dazu die Erkenntnis: RGB „Bild“ Vektorfeld
Vektor(feld)operationen Bildoperationen
Idee: Templates zur Steuerung der Simulation Konkret: „Injiziere“ (= Einblenden) ein Bild in das Druck oder Geschwindigkeitsfeld
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
18
4.2 Templates: Erzeugung / Anwendung I
„Neuer“ Overview:Felder + kontrollierende Templates
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
19
+
4.3 Templates: Erzeugung / Anwendung II
Templates können gezeichnet oder selbst entworfen sein
als „Screenshots“ aus Simulationen entnommen werden
wie Bilder aus anderen Templates aufgebaut sein
gruppiert, skaliert werden
vom Anwender/der Applikation in die Simulation injiziert werden
Drucktemplates „intuitively model divergence phenomena“
Modellieren von Quellen und Senken
Geschwindigkeitstemplates „add large-scale-structures“
Schnellen, Bögen oder Wirbel
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
20
4.4 Strukturen und Frequenzen Effektmodellierung durch verschiedene Parameter
Verschiedene / verschieden geformte Templates
Dauer und Frequenz der Template-„Injektion“
Ort (Wahrscheinlichkeitsverteilung)
Abhängigkeiten (z.B. Templates in Abhängigkeit zu diversen Gegebenheiten)
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
21
In all images, templates of equal shape and number are inserted.
From Image 1 to 3 we see high, medium and low frequency structures.
In image 4 all frequencies are contained. These effects are achieved by using different lifetimes and scale factors.
5. Ergebnisse & Bewertung 5. Ergebnisse & Bewertung
5.1 Leistungsmessungen
5.2 Pro & Contra
5.3 Persönliche Meinung und Ausblick
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
22
5.1 Leistungsmessungen Solving the NSE on 2D Grids
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
Impact of pressure templates
Full Demo, i.e.: - 2 x 2D Simulation
- 40 pressure Templates
- extrusion to 3D
23
5.2 Pro & Contra
Pro: Niedrige Busbelastung
Modellierung ist „intuitiv“
Nutzung der GPU bringt Rechenpower!
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
Contra: Kartenspezifischer Ansatz (Shader)
Aufwändige und unintuitive Programmierung
„GPGPU ist Aufgabe von Spezialisten“
24
5.3 Persönliche Meinung und Ausblick
GPGPU definitiv richtungsweisend Parallelisierung
Programmierbare Chipsätze
SIMD/MIMD Technologie
Spiele/VR Navier Stokes? für dieses Anwendungsgebiet ... immer noch zu rechenintensiv!
CPU Aufgaben wurden schon immer „ausgelagert“FPU, SPU, GPU, ...
PPU (Physics Processing Unit) ist nur eine Frage der Zeit!
1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
25
Vielen Dank für Ihre Aufmerksamkeit!Offene Fragen? Folie
1. Motivation & Overview 2
1.1 Motivation 31.2 Themenüberblick 41.3 Begriffe 5
2. Grundlagen 6
2.1 Physikalische Grundlagen, NSE 72.2 NSE & Grid 82.3 Beispiel: Einfache Partikelengine 92.4 Rückkopplung in Grids 102.5 Linear Sphärische Extrusion 11
3. GPGPU 12
3.1 Bedeutung der modernen GPU 133.2 Grafikpipeline, Shadinglanguages 143.3 GPGPU, SIMD / Vektorprozessor 153.4 Probleme „auf GPU transferieren“ 16
4. Contribution 17
4.1 „Templates“ zur Simulationssteuerung 184.2 Templates: Erzeugung und Anwendung I 194.3 Templates: Erzeugung und Anwendung II 204.4 Strukturen und Frequenzen 21
5. Ergebnisse & Bewertung 22
5.1 Leistungsmessungen 235.2 Pro & Contra 245.3 Persönliche Meinung und Ausblick 25
26
Mit Stand vom 26. Juni 2006:
GPU Simulation and Rendering of Volumetric Effects for Computer Games and Virtual Environments
Jens Krüger and Rüdiger Westerman, Eurographics 2006, Publication taken from:– http://wwwcg.in.tum.de/Research/Publications/VolEffects– http://wwwcg.in.tum.de/Research/data/Publications/eg05.pdf
Additional Materials:– http://laplace.physics.ubc.ca/People/msnajdr/OTHER/other.html– http://en.wikipedia.org/wiki/GPGPU– http://de.wikipedia.org/wiki/GPGPU– http://de.wikipedia.org/wiki/Prozessorarchitektur
Referenzen und Literaturverzeichnis