GPU Simulation and Rendering of Volumetric Effects for Computer Games and Virtual Environments Jens Krüger, Rüdiger Westermann Seminar „3D Animation und Visualisierung“ Technische Universität Darmstadt SS2006 - Andreas Schwarzkopf
Inhalt 1. Motivation & Overview 2. Grundlagen 3. GPGPU 4. Contribution 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 2 1.1 Motivation 1.2 Themenüberblick 1.3 Begriffe 2 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
1.1 Motivation Einsatzrahmen der vorgestellten Techniken Simulation von Fluiden Umfasst 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 3 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
1.2 Themenüberblick Fluid Simulation (2D) Spherical Interpolation Volume Rendering GPU Based Particle Engine 4 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
1.3 Begriffe „Themengebiet“: CFD „Physikalisches Hilfsmittel“: NSE 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 5 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
2. Grundlagen 2. Grundlagen 6 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 6 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
2.1 Physikalische Grundlagen NSE, 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) 7 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
2.2 NSE & Grid Ein 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 einer numerischen Lösung von Gleichungssystemen Mehrschrittig, Vereinfachungen, Starke Randbedingungen, Abstraktionen, Ungenauigkeiten führen zu Instabilitäten - Hier insbesondere: „Tradeoff“ Gridbasierter Lösungen 8 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
2.3 Beispiel: Partikelengine kleine, selbstgebaute Partikelengine Visualisiert Partikelfluss auf einem Grid 9 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
2.4 Rückkopplung in Grids 1. Druck Druckfeld 2. Geschwindigkeit Geschwindigkeitsfeld 3. Partikel (Advektion) Partikel-/Advektionsfeld 10 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
2.5 Linear Sphärische Extrusion 2D – 3D Extrusion „Gegeben: 2 Scheiben – Gesucht: Explosion“ 11 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
3. GPGPU 3. GPGPU 12 3.1 Bedeutung der modernen GPU 3.2 Grafikpipeline, Shadinglanguages 3.3 GPGPU, SIMD / Vektorprozessor 3.4 Probleme „auf GPU transferieren“ 12 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
3.1 Bedeutung der modernen GPU Geschwindigkeit und Parallelität GPU als (programmierbarer) Spezialprozessor 13 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
3.2 Grafikpipeline, Shadinglanguages Beispiel: NVIDIA GeForce 6800 Ultra 6 Vertexprozessoren (SIMD oder MIMD Parallelisierung) 16 Fragmentprozessoren (SIMD) 14 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
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! 15 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
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! 16 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
4. Contribution 4. Contribution 17 4.1 „Templates“ zur Simulationssteuerung 4.2 Templates: Erzeugung und Anwendung I 4.3 Templates: Erzeugung und Anwendung II 4.4 Strukturen und Frequenzen 17 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
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 18 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
4.2 Templates: Erzeugung / Anwendung I „Neuer“ Overview: Felder + kontrollierende Templates + 19 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
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 20 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
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) 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. 21 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
5. Ergebnisse & Bewertung 5.1 Leistungsmessungen 5.2 Pro & Contra 5.3 Persönliche Meinung und Ausblick 22 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
5.1 Leistungsmessungen Solving the NSE on 2D Grids Full Demo, i.e.: - 2 x 2D Simulation - 40 pressure Templates - extrusion to 3D Impact of pressure templates 23 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
5.2 Pro & Contra Pro: Contra: 24 Niedrige Busbelastung Modellierung ist „intuitiv“ Nutzung der GPU bringt Rechenpower! Contra: Kartenspezifischer Ansatz (Shader) Aufwändige und unintuitive Programmierung „GPGPU ist Aufgabe von Spezialisten“ 24 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
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! 25 1. Motivation & Overview – 2. Grundlagen – 3. GPGPU – 4. Contribution – 5. Ergebnisse & Bewertung
Vielen Dank für Ihre Aufmerksamkeit! Offene Fragen? Folie 1. Motivation & Overview 2 1.1 Motivation 3 1.2 Themenüberblick 4 1.3 Begriffe 5 2. Grundlagen 6 2.1 Physikalische Grundlagen, NSE 7 2.2 NSE & Grid 8 2.3 Beispiel: Einfache Partikelengine 9 2.4 Rückkopplung in Grids 10 2.5 Linear Sphärische Extrusion 11 3. GPGPU 12 3.1 Bedeutung der modernen GPU 13 3.2 Grafikpipeline, Shadinglanguages 14 3.3 GPGPU, SIMD / Vektorprozessor 15 3.4 Probleme „auf GPU transferieren“ 16 4. Contribution 17 4.1 „Templates“ zur Simulationssteuerung 18 4.2 Templates: Erzeugung und Anwendung I 19 4.3 Templates: Erzeugung und Anwendung II 20 4.4 Strukturen und Frequenzen 21 5. Ergebnisse & Bewertung 22 5.1 Leistungsmessungen 23 5.2 Pro & Contra 24 5.3 Persönliche Meinung und Ausblick 25 26
Referenzen und Literaturverzeichnis 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