Computerspiele Sommer Was sind Computerspiele? (c) 2013, Peter Sturm, Universität Trier 1

Ähnliche Dokumente
Grundlagen der Spieleprogrammierung

Ansätze 4. GPU. Echtzeit- Raytracing. Polygon- Rendering. Computerspiele Sommer (c) 2013, Peter Sturm, Universität Trier 1

Grundlagen der Spieleprogrammierung

Was sind Computerspiele? (c) 2013, Peter Sturm, Universität Trier

Zugänge. 6. 3D Programming. ! DirectX. ! Fixed-function Pipeline. ! Shader. ! OpenGL. ! Microsoft XNA. Spieleprogrammierung Winter 2011

Grundlagen der Spieleprogrammierung

Grundlagen der Spieleprogrammierung

Einordnung. ! Raytracing als Darstellungsmethode für 3D-Echtzeit unrealistisch! Enorm hoher Aufwand. ! Ausgangspunkt 3D-Szene

Seminar Game Development Game Computer Graphics. Einleitung

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Grundlagen der Spieleprogrammierung

Architektur moderner GPUs. W. Sczygiol - M. Lötsch

Softwareprojekt Spieleentwicklung

Kunst der Spieleprogrammierung. The END. Playful Design. (c) 2013, Peter Sturm, Universität Trier

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

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

3D-Grafik-Chips. Informatik-Seminar Michael R. Albertin. Betreuer: E. Glatz

General Purpose Computation on GPUs

Die Welt der Shader. Fortgeschrittene Techniken III

Jörn Loviscach Hochschule Bremen

Grafikkarten-Architektur

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

Jens Konerow. Managed DirectX und C#

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

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

Kapitel 4: Schattenberechnung

Überblick Echtzeit-Rendering. Uwe Domaratius

Thema: Hardware-Shader

A Simple and Practical Method for Interactive Ray Tracing of Dynamic Scenes

Seminar Computerspiele Räumliche Datenstrukturen. Ralf Pramberger

Mesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze

Kapitel 2: Mathematische Grundlagen

Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM

Beleuchtung. in Computerspielen

Computergrafik Universität Osnabrück, Henning Wenke,

Grundlagen der 3D-Grafik

Modellierung. Oliver Hartmann

Texture Based Direct Volume Rendering

Einführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg

Vorbemerkungen. Art of Game Programming Winter (c) Peter Sturm, Universität Trier 1. ! Vorlesung. ! Übung. ! Was nicht vorkommt!

Eine Einführung in die Architektur moderner Graphikprozessoren

Christina Nell. 3D-Computergrafik

Praktikum: Spieleengine im Eigenbau

Prozedurale Texturen >>Was nicht passt wird passend gemacht...<<

Computergrafik - Projekt

Prozessor- und Rechnerarchitekturen (Master)

Darstellungsarten für 3D-Körper. Boundary Representation (BRep):

BlendaX Grundlagen der Computergrafik

Grundlegende Algorithmen

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten

OpenGL. (Open Graphic Library)

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

Proseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg

Game Engine Architecture and Development. Effekte (Sound, Partikel, Physik)

2. Der ParaNut-Prozessor "Parallel and more than just another CPU core"

Eine Einführung Computergrafik SS14 Timo Bourdon

Compute Unified Device Architecture CUDA

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

C A R L V O N O S S I E T Z K Y. Transformationen. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011

Übersicht. Vergleich der Spielekonsole mit dem PC. Historie der Spielekonsolen von 1976 bis 1999

Kollisionserkennung

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung

Mathematische Grundlagen

Games Engines. Realtime Terrain Rendering

(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

OpenCL. OpenCL. Boris Totev, Cornelius Knap

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006

Seminar: GPU-Methoden für die Visualisierung und Computergraphik

Datenblatt: TERRA PC-GAMER ,00. Gaming-PC mit 240GB SSD + NVIDIA GTX 970 Grafik. Zusätzliche Artikelbilder IT. MADE IN GERMANY

Adaptives Displacement Mapping unter Verwendung von Geometrieshadern

Vom Web ins IoT: Schnelleinstieg in Tooling und Entwicklung

Praktikum Augmented Reality Fernrohr -Felix Löhr-

-dimensionale Darstellungen

Datenblatt: TERRA PC-GAMER ,00. Gaming-PC mit 120GB SSD + NVIDIA GTX 970 Grafik. Zusätzliche Artikelbilder IT. MADE IN GERMANY

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

Computergrafik. Ein anwendungsorientiertes Lehrbuch. Bearbeitet von Michael Bender, Manfred Brill

High Performance Embedded Processors

Masterpraktikum Scientific Computing

Graphische Datenverarbeitung I WS 2017/2018

Georg Molzer 1HDD 3D-Grafikkarten GDV-Hardware

Entwurf eines FPGA-Cores zur Simulationsbeschleunigung zeitkontinuierlicher Modelle im HiL Kontext

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

Machine Learning Hardware

Einführung in das Visualization ToolKit. Institut für Simulation und Graphik, Otto-von-Guericke Universität Magdeburg

GPU-Programmierung: OpenCL

GPU Programmierung. Thorsten Grosch

Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)

Newtek Lightwave Grundlagen der 3D-Vektorgrafik

HLSL PostProcess Shaders

Die Vision Landschaft und was sie mit Moore s Gesetz zu tun hat

GPU Programmierung. Thorsten Grosch

Universität Osnabrück Fachbereich Mathematik / Informatik. 5. Vorlesung ( )

World of Warcraft. Mindestvoraussetzungen

Beleuchtung Schattierung Rasterung

3D-Algebra Version 2

Transkript:

Was sind Computerspiele? (c) 2013, Peter Sturm, Universität Trier 1

Interdisziplinär Graphik Design Mathematik Physik VWL Psychologie Informatik Audio Musik Sprache Text BWL Regie Kamera Schauspiel (c) 2013, Peter Sturm, Universität Trier 2

Das Ideal: Photorealistisch Anwendung der relevanten physikalischen Gesetze Lichtreflektion und brechung Samt u.a. Objekteigenschaften (Oberflächenbeschaffenheit) Viele Freiheitsgrade bei der räumlichen Modellierung Mengenorientierte Ansätze Raytracing und Radiosity 50 fps und mehr leider noch nicht erreichbar aber man arbeitet dran J Norbert Kern William Fawcett & Povray Team Grundidee: Raytracing (c) 2013, Peter Sturm, Universität Trier 3

Die Realität Einfache Beschreibung der Objektoberfläche Durch Elementarobjekte wie z.b. Dreiecke Flexiblere Ansätze erkennbar Starke Einschränkungen bei Reflektions- und Refraktionsverhalten Viele Schummeleien und Tricks Texturen nähern Aussehen an Zusätzliche Maps simulieren Lichteinfluß, Oberflächenbeschaffenheit, Reflektionsverhalten, Ziel: Hinreichend realistische Wirkung mit vertretbarem Aufwand 3D- Pipeline Photorealismus häufig unnötig Vereinfachung Keine exakte Lichtberechnung Keine Reflektionen/Refraktionen Tricks Reine Softwarelösung CPU berechnet alle Schritte Leistungsfähige CPU notwendig Hardware-Beschleunigung Wesentliche Schritte übernimmt Spezial-Hardware 3D- Modell Verschiebungen Drehungen Bewegungen Clipping Triangulation Licht und Schatten 2D- Projektion Finish Shading Z- Buffer Texturen Perspektivenkorrektur Nebel Alpha- Blending... Darstellung (c) 2013, Peter Sturm, Universität Trier 4

Aufgabe der Graphikkarte Dreiecke (2D) 3D Modell Dreiecke (3D) Pixel CPU GPU Parallelarbeit Gleiche Arbeit für jedes Dreieck Moderne GPU schaffen mehrere Milliarde Dreiecke / s Gleiche Arbeit für viele Pixel Moderne GPU über 48 Milliarden Pixel / s (Pixelfüllrate) Keine Abhängigkeiten Gut Parallelisierbar (c) 2013, Peter Sturm, Universität Trier 5

3D- Hardware GPUs sind extrem leistungsfähige SIMD- Prozessoren Ziel: Arbeitsteilung mit CPU Stand 2013 Geforce GTX Titan 2699 Prozessoren Rechenleistung 1.3 TFLOPS (double) 4.5 TFLOPS (float) 6 GB 364- bit GDDR5 6 GHz effektiver Takt 288 GB/s Durchsatz (c) 2013, Peter Sturm, Universität Trier 6

Die ca. 7.7 Milliarden Transistoren auf 551mm 2 (23x23) (c) 2013, Peter Sturm, Universität Trier 7

Titan X (Update 2015) 3072 Cores, 8 Milliarden Transistoren, 1 GHz 12 GB Speicher, 336.5 GB/s Speicherbandbreite, 250 W (c) 2013, Peter Sturm, Universität Trier 8

Informatik Kernbereiche Programmiersprachen Effiziente Datenstrukturen Parallelität Computergraphik Echtzeitgraphik, Animation Verteilte Systeme Netzwerke Künstliche Intelligenz Physik Verhalten und Wechselwirkungen der Objekte Beschleunigung, Trägheit Starrheit, Flexibilität, Deformierbarkeit Zunehmend komplexere Schadensmodelle Rückwirkungen auf Graphikdarstellung Wesentliches Spielelement (c) 2013, Peter Sturm, Universität Trier 9

Nicht jeder will Online spielen Gewinnchancen gegen Computergegner manchmal höher J Leistungsfähigkeit der Computergegner beeinflußt stark die Spielqualität Gleiche Ausgangsposition Gleiche Bedingungen Vielfalt in der Reaktion Maß an Dummheit Bisher wenig CPU- Zeit zugeteilt KI Spezialfall verteilter Systeme Skalierbarkeit Performanz Robustheit Konsistenz Virtual Reality Interessante Herausforderungen Technisch Kulturell Ökonomisch Menschlich Multiplayer (c) 2013, Peter Sturm, Universität Trier 10

Beispiel: Verteilte Systeme Alle gängigen Anforderungen Skalierbarkeit Konsistenz Verfügbarkeit Sicherheit Das Netzwerk Client Internet Server Client Clients überwiegend hinter dünnen Leitungen Begrenzte Bandbreite Minimale Datenmenge, Komprimierung, Verbindungsabbrüche (Disconnects) Latenz = Lag (c) 2013, Peter Sturm, Universität Trier 11

Rennerfahrungen Festrennen Pro Quartal ein Fest Alle 10 Minuten ein Rennen mit maximal 4 Teilnehmern Meist standen zwischen 4 und 10 Teilnehmer an (zu jedem beliebigen Zeitpunkt) Schickes Pferd im Tausch gegen alten Klepper Aufregung wie bei einem echten Rennen Hoher Puls, kalte Hände, Hohe Konzentration, (c) 2013, Peter Sturm, Universität Trier 12

Glücklicher Gewinner (c) 2013, Peter Sturm, Universität Trier 13

Warum? Echte (menschliche) Gegner bzw. Mitstreiter Zusammenspiel mit Menschen aus der ganzen Welt Virtuelle Freundschaften Flucht in eine virtuelle Welt Hinauswachsen über das reale Leben (RL) Macht, Erfolg, Bestätigung Bis hin zur Sucht Spieler formen Spiele Abbilder realer Umgangsformen Positive Aspekte Freundschaft Partnerschaften Negative Aspekte Diebstahl Vandalismus Beleidigung Verrat (c) 2013, Peter Sturm, Universität Trier 14

Gefahren Soziale Verarmung fehlender persönlicher Kontakte Realitätsverlust mit physischen Folgen Spielsucht Vorteilnahme Ausbeutung (c) 2013, Peter Sturm, Universität Trier 15

Chancen Wirtschaftsfaktor Innovationsmotor Technisch Wissenschftlich Virtuelle Realitäten Überwindung des Raums Serious Games Gesellschaftliche Akzeptanz Der Platzhirsch Beispiel MMORG World of Warcraft Blizzard Entertainment Seit Ende 2004 Ca. 11 Millionen Abonnenten 2. Quartal 2010 1 Millarde Dollar Umsatz 290 Millionen Dollar Gewinn Add-on Cataclysm (erscheint 7.12.2010) 3.3 Millionen Exemplare in den ersten 24 Stunden 4.8 Millionen Exempare im ersten Monat (c) 2013, Peter Sturm, Universität Trier 16

Soziales & Gesellschaftliches Neue Räume für Randgruppen Die Welt wird ein Dorf Gemeinsamer Spielspaß Physische Räumlichkeit überwinden Virtuelle Freunde Soziale Netze Virtuelle Hochzeiten J Psychologische Hilfe für den Alltag Alternative Realitäten (c) 2013, Peter Sturm, Universität Trier 17

Technisch Wachsende Teilnehmerzahlen Aktuelle Server verkraften einige tausend Spieler Immer größere Welten Eine Welt (keine Mehrfachinstanziierung) User- Generated Content Eigene Quests Rollenspiel Forschungsschwerpunkte Neurobiologie / Psychologie Wie wichtig ist der Körper? Mirror neurons Wirtschaftswissenschaften Virtuelle Güter und Transaktionen Rechtswissenschaften Virtuelle Besitztümer, Rechte, Pflichten, Steuersysteme Informationssysteme Skalierbarkeit, Verteilte Systeme Offene Standards, Open Source (c) 2013, Peter Sturm, Universität Trier 18

Immersion Echte Gefühle bei guter Immersion Erhöhte Adrenalinproduktion Furcht, Wut, Zorn, Freude, usw. Ununterscheidbarkeit für Gehirn Spiegelneuronen Immerwährende philosophische Diskussion Alle psychischen und physischen Reaktionen (c) 2013, Peter Sturm, Universität Trier 19

Spiele mit einem Zweck Serious Games Beispiele Simulationen (Militär, Politik, Ausbildung,...) Edutainment Game- based Learning Organizational- dynamic Games Games for Health Productivity Games... Hoher Entwicklungsaufwand Playful Design (c) 2013, Peter Sturm, Universität Trier 20

Spielend Arbeiten? Bedienungsfreundlichkeit ZENTRALES Element der Spieleentwicklung Spiele- Software wird meist freiwillig genutzt J Spiele waren immer wichtig sind wichtig werden eher wichtiger Lernen Geistige & körperliche Fitness Soziale Interaktion Playful Design Erfolgreiche Ideen aus der Spielewelt auf herkömmliche Anwendungen übertragen Neudefinition konventioneller Anwendungen Realistisch betrachtet eher selten Sich inspirieren lassen Langfristig mehr Ideen als man vielleicht erwartet (c) 2013, Peter Sturm, Universität Trier 21

Perspektiven Immersion Flow erhöhte Aufmerksamkeit / Konzentration Vergißt die reale Zeit Autonomie Mehr Kontrolle Abbau von Streß Soziale Interaktion und Reputation Lernen Belohnungssysteme (Reinforcement) 3D- Echtzeitgraphik (3) Mathematische Grundlagen Das Ideal: Raytracing und Radiosity DirektX und OpenGL Engines Physik (1) Outline Multiplayer (4) Verteilte Simulation Massive Multiplayer Online Games (insbesondere MORPGs) KI = Intelligenz der Computergegner (1) Weitere Themengebiete (3) (c) 2013, Peter Sturm, Universität Trier 22

Literatur Michael Abrash Graphics Programming Watt Policarpo 3D Games (Volume I und II) Fernando bzw. Pharr GPU Gems 1, 2, und 3 nvidia The End (c) 2013, Peter Sturm, Universität Trier 23

2. Grundlagen Mathematik & Graphik (c) Peter Sturm, Universität Trier 1

Motivation 3D- Graphik Mathematik im 3D- Raum Koordinatensysteme y Punkt (Vektor) Gerade, Fläche, Körper Affine Transformationen Verschieben, Skalieren, Drehen, Scheren z x Performanz Leistungsaspekte Gleitkommazahlen Viele viele Gleitkommaoperationen Hoher Optimierungsdruck Dedizierte HW- Unterstützung (c) Peter Sturm, Universität Trier 2

Koordinationsysteme Bezugssysteme Ursprung und orthogonale Richtungsvektoren Objektposition relativ zum Ursprung Absolutes Koordinatensystem Relatives Koordinatensystem Objektspezifischer Ursprung http://www.tripledtools.com/ramjac/ Punkte Punkte sind relativ zu einem Koordinatensystem Abstand vom Ursprung Punkt: 3- Tupel Operationen auf Punkte Translation Skalierung Rotation z a b c b y a c x (c) Peter Sturm, Universität Trier 3

Affine Transformation: Translation Translation Verschiebung bzgl. den Grundachsen Mathematisch: Addition x tx y + ty z tz x + tx = y + ty z + tz Affine Transformation: Skalierung Skalierung Abstand zum Ursprung kleiner oder größer Mathematisch: Multiplikation sx x sy y sz z sx x = sy y sz z (c) Peter Sturm, Universität Trier 4

Affine Transformation: Rotation Rotation Drehung (meist um eine Grundachse) Mathematisch: Winkelfunktionen Beispiel: Drehung im Z- Achse: x cos( α) y sin( α) x sin( α) + y *cos( α) z x y z 1 Wünschenswert Eine Datenstruktur für Alles Matrizenoperationen Homogenes Koordinatensystem 4- dimensionale Koordinaten Punkt = V(x, y, z, w) a = a/w und w 0 Gängig ist w=1 Transformationsmatrizen: 4x4 (c) Peter Sturm, Universität Trier 5

(c) Peter Sturm, Universität Trier 6 Translation Einfache Verschiebungsmatrix Operation 1 0 0 0 1 0 0 0 1 0 0 0 1 tz ty tx = 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 ' ' ' z y x tz ty tx z y x Skalierung Skalierungsmatrix Operation 1 0 0 0 0 0 0 0 0 0 0 0 0 sz sy sx = 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 ' ' ' z y x sz sy sx z y x Uniform: sx=sy=sz

(c) Peter Sturm, Universität Trier 7 Rotation Nur über jeweils eine Grundachse Alles andere geht auch, ist aber Brain Twister J Grundmatrizen: = 1 0 0 0 0 ) cos( ) sin( 0 0 ) sin( ) cos( 0 0 0 0 1 α α α α Rx = 1 0 0 0 0 ) cos( 0 ) sin( 0 0 1 0 0 ) sin( 0 ) cos( α α α α Ry = 1 0 0 0 0 1 0 0 0 0 ) cos( ) sin( 0 0 ) sin( ) cos( α α α α Rz Matrizen zusammenfassen Rotation und dann Verschiebung Beispiel Drehung um 45 Grad bzgl. X- Achse Verschiebung um - 80 bzgl. Y- Achse Achtung: Erste Operation = Letzte Matrix M2 M1: Erste Transformation ist M1 = 1 0 0 0 0 0.707 0.707 0 80 0.707 0.707 0 0 0 0 1 1 0 0 0 0 0.707 0.707 0 0 0.707 0.707 0 0 0 0 1 1 0 0 0 0 1 0 0 80 0 1 0 0 0 0 1

Konstruktion eines lokalen Systems Matrizenoperationen bzgl. Koordinatensystem (Welt) Aufbau des lokalen Systems: Verschieben des Zentrums (Pivot) zum Ursprung Gewünschte affine Transformation ausführen Verschiebung zurück an den Ausgangspunkt Resultat: V2 Taff V1 Matrixoperationen nicht kommutativ Beispiel: Teekanne Translation: Verschiebung an Y- Achse um - 80 Rotation: Drehung an X- Achse um - 45 Grad Zuerst Translation, dann Rotation Zuerst Rotation, dann Translation (c) Peter Sturm, Universität Trier 8

Live R, dann T Weitere sinnvolle Funktionen Vektoraddition Kräftparallelogramm V W Länge eines Vektors V+W 2 2 V = x + y + Normalisierter Vektor: z 2 U = V V (c) Peter Sturm, Universität Trier 9

Normalvektor Normale zu einer Oberfläche wird häufig benötigt N V Kreuzprodukt: N = V x W vy N = vz vx Bei Kurven muß erst die Tangentialebene bestimmt werden W wz vz wy wx vx wz wy vy wx Skalarprodukt Winkelbestimmungshilfe zwischen Vektoren x = V W = vx wx + vy wy + vz wz Eigenschaft x>0 wenn α<90 Grad x=0 wenn α=90 Grad x<0 wenn α>90 Grad Winkel zwischen V und W: cos(α) = V V W W (c) Peter Sturm, Universität Trier 10

http://www.futuretech.blinkenlights.nl/c- ray.html Grundidee: Raytracing Direkte Umsetzung des Sehens Auge Projektionsfläche (Monitor) Szene (c) Peter Sturm, Universität Trier 11

Raytracer Beschreibung der darzustellenden 3D- Szene CSG: Constructive Solid Geometry Beschreibung der Materialien Farbe Reflektionseigenschaften Refraktionseigenschaften Oberflächenstruktur Extras: Rauhheit, Lichtquellen Kameraposition Werkzeugkette 3D Editor Blender Maya 3DS Max Szene Raytracer Raytracer FX Engine (c) Peter Sturm, Universität Trier 12

3D- Editor http://hof.povray.org/pebbles.html von Jonathan Hunt Povray (c) Peter Sturm, Universität Trier 13

Persistence of Vision (www.povray.org) Binaries und Sourcen für Windows, Linux, Immer noch aktuell Version 3.6 10 MB (Windows) 10 MB (Mac OS X) 8 MB (Linux) 3D- Editor Moray 3D Website Constructive Solid Geometry Volumetrische Grundobjekte Quader Kugel Zylinder, Mengentheoretische Konstruktionsoperationen Vereinigung Schnitt Differenz (c) Peter Sturm, Universität Trier 14

Finite Solid Primitives Gängige Elemente Box Cone Cylinder Prism Sphere Torus Text Exoten Blob Height Field Julia Fractal Lathe Superquadric Ellipsoid Surface of Revolution Box (c) Peter Sturm, Universität Trier 15

Cone Cylinder (c) Peter Sturm, Universität Trier 16

Sphere Superquadric Ellipsoid (c) Peter Sturm, Universität Trier 17

Infinite Solid Primitives: Plane Mesh Objektbeschreibungen auf der Basis von Dreiecken (c) Peter Sturm, Universität Trier 18

Beispiel mesh { triangle { <- 3,2,0> <- 3,1,5> <1,1,5> } } triangle { <- 3,2,0> <- 2,0,- 4> <3,0,- 4> } triangle { <- 3,1,0> <1,0,5> <3,0,- 4> } triangle { <- 3,2,0> <- 3,1,0> <1,1,5> } texture { MyTexture } Anwendung von Meshes 3D- Echtzeitgraphik basiert aktuell auf Dreiecken Beschleunigerkarten unterstützen gezielt Dreiecke Identische Arbeitsschritte Übertragung einer Szene an Graphikkarte Generierung einer Povray- Beschreibung aus Dreiecken (c) Peter Sturm, Universität Trier 19

mesh2 Erweitere Definition Anlegen von Knotenvektoren Definition der Dreiecke über Indizes Einsparungen bei zusammenhängenden Meshes Knoten tauchen immer in mehreren Dreiecken auf CSG: Beispiel 1 Beschreibung: cylinder { <0,1,0> <0,6,0> 1 texture { MyTexture } } Weitere Bestandteile Zwei Lichtquellen Reflektiver Untergrund Kamera (c) Peter Sturm, Universität Trier 20

Union Kugeln hinzufügen Beschreibung: #declare Sol = union { cylinder { <0,1,0> <0,5,0> 0.5 } sphere { <0, 1, 0> 1 } sphere { <0, 5, 0> 1 } texture { MyTexture } } object { Sol } object { Sol translate <0,- 3,0> rotate <90,0,0> translate <0,3,0> } CSG: Beispiel 2 (c) Peter Sturm, Universität Trier 21

Difference Intersection (c) Peter Sturm, Universität Trier 22

#declare Sol = union { cylinder { <0,1,0> <0,5,0> 0.5 } sphere { <0, 1, 0> 1 } sphere { <0, 5, 0> 1 } texture { MyTexture } } CSG: Beispiel 3 #declare TwoSol = union { object { Sol } object { Sol translate <0,- 3,0> rotate <90,0,0> translate <0,3,0> } } #declare HalfSphere = intersection { sphere { <0,3,0> 3 } box { <0,0,- 3> <- 3,6,3> } } difference { object { HalfSphere } object { TwoSol } texture { MyTexture } } Object Modifiers Material-, Reflektions, Refraktionseigenschaften etc. (c) Peter Sturm, Universität Trier 23

Pigment Farben und Farbmuster Einfache Farbe texture { pigment { color rgb<1,0,0> } } Image Map (c) Peter Sturm, Universität Trier 24

Polieren der Objektoberfläche Eigenleuchten (Ambient) Reflektionseigenschaften Lichtstreuung Brillianz Widerschein von Lichtquellen (Phong, Specular, Diffuse) Eingeschränkt Oberflächenstrukturen (Roughness) Finish #declare MyTexture = texture { pigment { color Red } finish { ambient 0.2 phong 0.5 phong_size 10 reflection { 0.01 } diffuse 0.4 // specular 0.5 // roughness 0.5 // metallic 0.5 reflection Green // irid { 0.2 } // Seifenblasenfilm } } Finish: Beispiele (c) Peter Sturm, Universität Trier 25

Brechung Interior- Eigenschaften bei Objekten ior = Brechungsindex 1.0 Luft 1.33 Wasser 1.5 Glas 2.4 Diamand Zusätzliche Farbeigenschaft Filter Trasmit Oberfläche (contd.) Störungen bzgl. der Oberflächennormale Parameter Bump Map Objektform ändert sich dadurch nicht Diskrepanz zwischen Silhouette und scheinbar rauher Oberflächenstruktur (c) Peter Sturm, Universität Trier 26

Bumps: Beispiel Lichtquellen (c) Peter Sturm, Universität Trier 27

Spot Light Camera (c) Peter Sturm, Universität Trier 28

Radiosity Radiosity Traditionell: Helligkeit an jedem Punkt über Diffuse (Lichtzugewandte Seite wird heller) Specular (Widerschein der Lichtquelle) Reflektion Ambient (Grundhelligkeit) Radiosity Ambient wird genauer berechnet Auswirkungen benachbarter Objekte (c) Peter Sturm, Universität Trier 29

Radiosity: Beispiel Normal: 5 Sekunden Radiosity: 35 Sekunden (c) Peter Sturm, Universität Trier 30

3. Echtzeitgraphik Ideal und Wirklichkeit Raytracing für 3D- Echtzeit noch überfordert Enorm hoher Aufwand O(# Pixel # Objekte # Lichtquellen) Alternativansatz 3D- Szene Welche Objekte sind auf dem Bildschirm sichtbar? Szenenkomplexität bestimmt Aufwand O( # Objekte # Lichtquellen) (c) Peter Sturm, Universität Trier 1

Rendering Pipeline Application Geometry Rasterizer Application Application Geometry Rasterizer Organisation aller relevanten Objekte Koordiniert Wechselwirkungen mit... Physik Kollisionsberechnung Audio Character Animation KI Eingaben (c) Peter Sturm, Universität Trier 2

Geometry Application Geometry Rasterizer 3D- Operationen Per- Polygon Per- Vertex Eigene Unter- Pipeline Rasterizer Application Geometry Rasterizer 2D- Operationen Screen Space - > Pixel (c) Peter Sturm, Universität Trier 3

Application Geometry Rasterizer 3D-Modellierung Beschreibung der 3D-Szene Volumenorientiert (CSG) Elementarvolumina: Quader, Zylinder, Kugel,... Mengenoperationen Flächenorientiert Patchwork Reguläre Flächen Polygone Dreiecke Freiformflächen Bezierkurven Splines (c) Peter Sturm, Universität Trier 4

Tessellation / Triangulation 3D- Hardware unterstützt nur bestimmte Elementarflächen Umwandlung des 3D- Modells notwendig Bei regulären Flächen einfach Triangulation der Freiformflächen aufwendiger Hohe Auflösung = Viele Dreiecke = Hoher Rechenaufwand Application Geometry Rasterizer (c) Peter Sturm, Universität Trier 5

Schnittstelle CPU und GPU Leistungsengpaß Benötigter Speicherdurchsatz n Anzahl der Dreiecke Punktgröße: 3 Floats/Double, Farbinformation, Fps: Frames per Second Beispiel: n=20000, Punkt=3*8 Byte, 2 Byte Zusatz, 50 fps Ca. 85 Mbyte/s Durchsatz Konsequenz Unsichtbare Dreiecke vorher identifizieren Redundanzen minimieren TP = n 3 Punkt fps CPU - GPU Welche Primitive übertragen? Trade- off Finden vs. Verwerfen durch GPU Culling Geometrische Datenstrukturen Dauerhafte Speicherung auf GPU Primitiv- Instanziierung (c) Peter Sturm, Universität Trier 6

Retained- und Immediate- Mode Retained Mode 3D- Modell in GPU Zugriff ähnlich einer Hauptspeicher- DB Implizite Umsetzung Immediate Mode 3D- Modell Bestandteil der Anwendung Aufruf aller notwendigen Zeichenoperationen Explizite Umsetzung Geometry Pipeline Model and View Transform Vertex Shading Projection Clipping Screen Mapping (c) Peter Sturm, Universität Trier 7

Projektion Transformation in Kubus (- 1,- 1,- 1) bis (1,1,1) Orthographisch (Parallel) Isometrische Sicht Perspektivisch Viewing Frustrum Application Geometry Rasterizer (c) Peter Sturm, Universität Trier 8

(c) Peter Sturm, Universität Trier 9 Rasterizer Pipeline Triangle Setup Triangle Traversal Pixel Shading Merging 2D-Projektion Sichtbarkeit einzelner Dreiecke? Ort in der 2D-Projektion? Lösung eines linearen Gleichungssystems für jeden Punkt der Szene α und β: Ort und Sichtbarkeit λ Tiefeninformation Effizienz des Lösungsverfahrens Probleme Teilweise sichtbare Dreiecke e innerhalb eines Objekts + = + + z y x z y x z y x z y x z y x z y x e e e p p p p p p w w w v v v o o o λ β α p e o w v α β λ

Finish Z- Buffer Tiefeninformation Dreiecksflächen füllen Farbe Texturen Schatten Transparenzeffekte Nebel Anti- Alias Kantenglättung Tiefeninformation: Z- Buffer Einfaches Beispiel Auflösung (16 oder 32 Bit) λ=7 λ=2 λ=5 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5 5 7 5 7 7 5 5 5 5 7 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 (c) Peter Sturm, Universität Trier 10

Texturen Bekleben der Fläche Wiederholung bei großer Fläche (Tiling) Große Texturen Viel Speicher Komprimierung = + Perspektivische Korrektur Mip- Maps Verschiedene Auflösungen Wahl entfernungsabhängig Doppelter Platzbedarf (c) Peter Sturm, Universität Trier 11

Bump Map Textur ist Höhenfeld Rauhe Oberfläche Environmental Map http://www.aerotwist.com/tutorials/create- your- own- environment- maps/ Living in the box Spiegelungen (c) Peter Sturm, Universität Trier 12

Schatten Licht... Lichteinfluß auf Fläche berechnet CPU Zusätzliche Texturen bestimmen Lichtwirkung Transparente Leuchteffekte durch Alpha- Blending... Und Schatten Einzelne Dreiecke sind abgedunkelt Einfaches Shading Einheitliche Abdunklung Gourad Shading Iterative Zunahme der Abdunklung Ausgangspunkt Beispiel (c) Peter Sturm, Universität Trier 13

Transparenz Überlagerung zweier Bilder Alpha- Blending Alphawert pro Pixel P HG P VG P Gesamt = P + α P HG VG Alpha Ausgabe Sauberer Wechsel zwischen Einzelbildern Double- Buffer, Triple- Buffer, Steuerung über VSYNC (c) Peter Sturm, Universität Trier 14

Trends Ziel Auslastung CPU und GPU jeweils 100% Aktuell mehr Steigerungspotential in der GPU Parallelisierbarkeit der Abläufe Verlagerung der Schnittstelle nach oben z.b. Lichtquellen in HW (zuerst 8, ) Ansätze für Retained Mode Komplexere geometrische Grundstrukturen Splines, (c) Peter Sturm, Universität Trier 15

Computerspiele Sommer 201 4. GPU Ansätze Echtzeit- Raytracing Modell und Materialeigenschaften auf Raytracer Kontinuierliche Darstellung Polygon- Rendering CPU wählt darzustellende Polygone aus Render Pipeline (c) Peter Sturm, Universität Trier 1

Computerspiele Sommer 201 Realtime Raytracing Technische Umsetzung Mit existierender Hardware Software auf CPU (Intel- MIC / Daniel Pohl) Software auf GPU (nvidia Optix / Andreas Dietrich) Software auf anderen Prozessoren (Cell) Mit neuer Hardware (RPU/SaarCOR, Uni Saarbrücken) (c) Peter Sturm, Universität Trier 2

Computerspiele Sommer 201 SaarCOR SaarCOR Benchmarks (c) Peter Sturm, Universität Trier 3

Computerspiele Sommer 201 Szenenkomplexität Ergebnisse (c) Peter Sturm, Universität Trier 4

Computerspiele Sommer 201 Referenz Standardszene - Conference Statische Szene 282k Dreiecke Diffuses Rendering 2009 Intel MIC (24 cores) - > 36MRays/s - > 360x354@17fps Quelle: http://www.youtube.com/watch?v=yvcvd3xtvtg (c) Peter Sturm, Universität Trier 5

Computerspiele Sommer 201 Resultate Technik Mega Rays/s 1024 Pixel x 1024 Pixel x 10 rays per pixel @ 25 fps ~260 HD1080: 1920 x 1080 x 20 @ 60 ~2500 CPU [JS2004] ~1,6 CPU (qwrt, non- std) [DP2009] ~46 CPU (wolfrt, non- std) [DP2012] ~26 GPU [AL2009] ~142 GPU [SP2010] ~193 Cell [HF2006] ~240 SaarCOR / RPU [SW2006] ~3,2 / ~1 Polygon Rendering (c) Peter Sturm, Universität Trier 6

Computerspiele Sommer 201 Rendering Pipeline Application Geometry Rasterizer Fixed- Function Pipeline Input (Primitive, Vertex) Tesselation Rasterization Multitexturing Finish & Display DirectX 1-6 vor 2000 (c) Peter Sturm, Universität Trier 7

Computerspiele Sommer 201 Fixed- Function Pipeline Input (Primitive, Vertex) Tesselation Transform and Lighting Rasterization Multitexturing Finish & Display Mixed Function Pipeline Input (Primitive, Vertex) Tesselation Transform and Lighting Rasterization Multitexturing Finish & Display Vertex Shader Pixel Shader (c) Peter Sturm, Universität Trier 8

Computerspiele Sommer 201 Mixed Function Pipeline Input (Primitive, Vertex) Tesselation Transform Vertex and Shader Lighting Rasterization Multitexturing Pixel Shader Finish & Display Programmable Pipeline Input (Primitive, Vertex) Tesselation Transform Shader and (Vertex) Lighting Rasterization Multitexturing Shader (Pixel) Finish & Display Shader- basierte Fixed- Function Pipeline (c) Peter Sturm, Universität Trier 9

Computerspiele Sommer 201 (c) Peter Sturm, Universität Trier 10

Computerspiele Sommer 201 Marina Bay Sands Singapore Moderne Pipeline Input (Primitive, Vertex) Vertex Shader Hull Shader Tessellator (Fixed) Domain Shader Geometry Shader Detaillierungsgrad (LOD) Pro Tessellationspunkt (Punkt und Texturkoordinaten) Arbeitet auf ganzen Primitiven Rasterization Pixel Shader Finish & Display (c) Peter Sturm, Universität Trier 11

Computerspiele Sommer 201 Streaming Input (Primitive, Vertex) Vertex Shader Hull Shader Tessellator (Fixed) Domain Shader Geometry Shader Rasterization Pixel Shader Finish & Display Compute Shader Input (Primitive, Vertex) Vertex Shader Hull Shader Tessellator (Fixed) Domain Shader Geometry Shader Data Rasterization Pixel Shader Compute Shader Finish & Display (c) Peter Sturm, Universität Trier 12

Computerspiele Sommer 201 Shader Pool again Input (Primitive, Vertex) Vertex Shader Hull Shader Tessellator (Fixed) Domain Shader Geometry Shader Data Rasterization Pixel Shader Compute Shader Finish & Display Motivation Ursprung im professionellen Bereich CAD und Filmentwicklung Random Scan Display Processing Unit Silicon Graphics war Marktführer Ganze Rechner sind Graphikkarte (c) Peter Sturm, Universität Trier 13

Computerspiele Sommer 201 SGI Onyx 2 GPU- Board IP19 (c) Peter Sturm, Universität Trier 14

Computerspiele Sommer 201 Motivation Aufgabenverteilung CPU- GPU Hoher Innovationsdruck (Spiele) Immer mehr Polygone Hoher Parallelisierungsgrad Je tiefer, je mehr Programmierbarkeit CPU Speicher 2D- Projektion Vertex Shader Finish Pixel Shader Vollbildfilter (FSAA, etc.) Profi- Bereich SGI (2002) Onyx 3000 InfiniteReality4 Bis zu 16 Pipelines Bis zu 128 Prozessoren 1 TB Speicher 716 GB/s I/O (c) Peter Sturm, Universität Trier 15

Computerspiele Sommer 201 Specs 3dfx Siegeszug beginnt mit der Voodoo 1 (1996) 50 MHz Taktfrequenz 2 bis 4 MByte Videospeicher Voodoo 2 (1998) Träume werden wahr Voodoo 3 und danach wenig erfolgreich nvidia kauft 3dfx (Nov 2000) (c) Peter Sturm, Universität Trier 16

Computerspiele Sommer 201 Ursprung im professionellen Bereich CAD und Filmentwicklung Random Scan Display Processing Unit Silicon Graphics war Marktführer Ganze Rechner sind Graphikkarte Siegeszug von 3dfx Beschleuniger- Hardware für den PC Aktuelle Firmen nvidia ATI Motivation Chips von 3dfx http://www.mrsci.com/graphics- Cards/3dfx.php (c) Peter Sturm, Universität Trier 17

Computerspiele Sommer 201 3dfx Voodoo 2 3dfx Voodoo 2: Zahlen 2-4 Prozessoren pro Karte 1 Pixelprozessor 1-3 Texturprozessoren 90 MHz Taktfrequenz 12-16 Mbyte Speicher 2.1 Gbyte Speicherbandbreite (intern) Leistungsdaten 3 Millionen Dreiecke/s (gemessen: 25 Pixel Dreiecke) 90 Mpixel/s 180 Mpixel/s im Doppelpack (SLI) Maximal 1024x768 Pixel Auflösung 24 Bit Farben (Ausgabe 16 Bit Dithered) 16 bpp Z- Buffer (c) Peter Sturm, Universität Trier 18

Computerspiele Sommer 201 3dfx Voodoo 2: Architektur Ziel: Möglichst viele Operationen pro Pixel in einem Zyklus Speicher 2-4 MB TMU Speicher 4 MB PCI- Bus Pixelfx TMU nc Speicher 4 MB 3dfx Voodoo 2: SLI Speicher 2-4 MB TMU Speicher 4 MB Pixelfx PCI- Bus TMU Speicher 4 MB Scan Line Interface Gerade Zeilen Ungerade Zeilen 2 PCI- Slots Traum jedes Spielers (Damals) Schnell Vergleichsweise Teuer Speicher 2-4 MB Pixelfx nc TMU TMU Speicher 4 MB Speicher 4 MB nc (c) Peter Sturm, Universität Trier 19

Computerspiele Sommer 201 Hübsch! Graphik- Pipeline TMU2 TMU1 Texture Combine Unit TMU2 Linear Frame Buffer Write Iterated RGBA Constant RGBA Texture Combine Unit Frame Buffer Special Effects Unit Color & Alpha Combine Unit Alpha Test Depth Test (Z/W Buffer) Fog Alpha Blend (c) Peter Sturm, Universität Trier 20

Computerspiele Sommer 201 3dfx Voodoo 3 und danach 3dfx ist seiner Zeit voraus und wird zu ambitioniert 3dfx Voodoo 6 J (c) Peter Sturm, Universität Trier 21

Computerspiele Sommer 201 nvidia RivaTNT 1 Prozessor 90 Mhz Taktfrequenz 7 Millionen Transistoren 12 Kbyte Cache 16 Mbyte Speicher 128 Bit Speicherbreite 1.8 Gbyte Speicherbandbreite Leistungsdaten 6 Millionen Dreiecke/s 180 Mpixel/s Füllrate Maximal 1920x1200 Auflösung 24 Bit Farben 16/24 bpp Z- Buffer PCI- Bus Prefetch Scatter/Gather Virtual DMA Vertex Cache Setup & Pix el Processor Light & Effects Proces s or Setup & Pix el Processor Light & Effects Proces s or Constant Velocity FIFO Texture Cache GPUs (Anfang 2003) (c) Peter Sturm, Universität Trier 22

Computerspiele Sommer 201 GPUs (2003) (c) Peter Sturm, Universität Trier 23

Computerspiele Sommer 201 Flop 2003: nvidia NV30 Extreme Wärmeentwicklung Spezielles Lüfterdesign (Föhn) O- Ton nvidia: Lautstärke kein Problem. Power Gamer spielen allemal mit Kopfhörer Mehr und Besser Vertex- und Pixel- Shader (c) Peter Sturm, Universität Trier 24

Computerspiele Sommer 201 2005 nvidia GeForce 7800 Ultra ATI Radeon X1800 (c) Peter Sturm, Universität Trier 25

Computerspiele Sommer 201 nvidia 320 Millionen Transistoren Shader Version 3.0 Programme können beliebig groß werden 8 Vertex Shader 24 Pixel Shader 512 MB GTX Variante erhältlich (650 Euro 12/05) bis zu 550 MHz GPU- Takt bis zu 1.7 GHz Speichertakt (DDR 3) 256 Bit Speicherinterface Architektur Geforce6 und 7 Jetzt 8 Vertex Prozessoren Jetzt 24 Pixel Prozessoren Und 24 Z Units aus GPU Gems 2: http://developer.nvidia.com/object/gpu_gems_2_home.html (c) Peter Sturm, Universität Trier 26

Computerspiele Sommer 201 Vertex Prozessor Pixel Prozessor Arbeiten auf einem 4- Pixel- Quadrat (Quad) Gefilterter Texture- Zugriff Bilinear, Trilinear, Anisotroph Jedes Quad wird mit GPU- Takt durch beide Units geroutet 8 mathematische Operation pro Takt 4 mathematische Operation und Texture fetch pro Takt (c) Peter Sturm, Universität Trier 27

Computerspiele Sommer 201 ATI Radeon X1800 X1800 Architektur (c) Peter Sturm, Universität Trier 28

Computerspiele Sommer 201 Vergleich http://hothardware.com/vie warticle.aspx?page = 2&article id= 751&cid= 2 Trends Anzahl der integrierten Pixel- Pipelines wächst Vereinheitlichung der Shader Unified Vertex and Pixel Shader in WGF 2.0 (DirectX 10) Unified CPU und GPU Prozessoren? Multiprozessoren (Diskret oder auf dem CHip) siehe z.b. IBM Cell Prozessor CPU- Interface weiter beschleunigen (PCI Express) Sehr breiter Speicherbus 256 Bit gängig Eklat nvidia mit 128 Bit ganz schnellem Speicher Freiformflächen statt Dreiecke? (c) Peter Sturm, Universität Trier 29

Computerspiele Sommer 201 2007 nvidia GeForce 8800 GTX ATI Radeon HD 3000 Serie (c) Peter Sturm, Universität Trier 30

Computerspiele Sommer 201 Graphik NVIDIA G80 Graphikprozessor 681.000.000 Transistoren 575 MHz Taktfrequenz 1.3 GHz Shadertakt Speicher 786 MB DDR3 900 MHz Taktfrequenz 384 Busbreite 128 Unified Shader (DirectX 10) Preis: ca. 600 Euro Kenngrößen www.tecchannel.de (c) Peter Sturm, Universität Trier 31

Computerspiele Sommer 201 TOP 500 Compute Unified Device Architecture Mathematische / Physikalische Simulationen o.ä. Jeweils 16 Prozessoren haben gemeinsamen Cache (8800 GTX) Spezifische Compiler NVIDIA CUDA 47 197 10 13 15 Tabelle rechts: Beschleunigungsfaktor gegenüber Core 2 Duo E6600 (c) Peter Sturm, Universität Trier 32

Computerspiele Sommer 201 2 * 8800 GTX = Doppelter Spaß J und viel Geld (~ 1200 Euro nur Graphik) zzgl. 850 1000 Watt Netzteil Kenngrößen www.tecchannel.de (c) Peter Sturm, Universität Trier 33

Computerspiele Sommer 201 ATI Radeon HD 3xxx (c) Peter Sturm, Universität Trier 34

Computerspiele Sommer 201 Speicher- Interface Trends (c) Peter Sturm, Universität Trier 35

Computerspiele Sommer 201 nvidia Fermi Intel Larrabee Larabee Core x86, 2 GHz (?), In- Order Execution, 4- Fach HT Lokaler L1 Cache 16- fach SIMD Virtual Memory Multi- Tasking 64 Gflop 32 Cores Unified L2 Cache (partitioniert) 2 TeraFlop Ring Interconnect OS Fixed Functions CP U CP U CP U CP U L2 Cache CP U CP U Larrabee Karte CP U CP U 512 1 GB RAM μos Speicher Controller PCIe (c) Peter Sturm, Universität Trier 36

Computerspiele Sommer 201 2013 Stand 2013 Geforce GTX Titan 2699 Prozessoren Rechenleistung 1.3 TFLOPS (double) 4.5 TFLOPS (float) 6 GB 364- bit GDDR5 6 GHz effektiver Takt 288 GB/s Durchsatz (c) Peter Sturm, Universität Trier 37

Computerspiele Sommer 201 Titan @ Oak Ridge National Lab TOP500, Platz 1, November 2012 560640 Cores (inkl. Shader) 17.5 PFlops bis 27.1 PFlops 8209 kw (c) Peter Sturm, Universität Trier 38

Computerspiele Sommer 201 GPGPU Continuum Workshop, 25.4.2013, Haifa, Israel Fragen? c t - Schlagseite (c) Peter Sturm, Universität Trier 39

5. Culling CPU Ziele 3D-Modell im Hauptspeicher Groß bis riesig Minimale Polygonmenge kommunizieren GPU Culling Nicht sichtbare Polygone frühzeitig entfernen Verschiedene Varianten (c) Peter Sturm, Universität Trier 1

Szenenverwaltung Bisher: Szene = Wenige Objekte Repräsentiert durch Vertex- Stream Direkt Indiziert (Mehrfachverwendung) Streaming an GPU mit jedem Frame Unrealistisch http://www.youtube.com/watch?v=p- 0c4j 8gS q4 (c) Peter Sturm, Universität Trier 2

Komplexe Welten Weitläufige Gebiete Viele Innenräume Viele Objekte = Viele Streams Nur Bruchteil jeweils sichtbar Effizienter Schnitt mit Frustum? View Frustrum Culling (VFC) Dynamik Statische Objekte / Welt Aufwendiges Vorberechnen möglich Dynamische Objekte In statische Datenstruktur integrierbar Dedizierte Datenstruktur Geringe Anzahl? (c) Peter Sturm, Universität Trier 3

Frustrum Culling Scene Culling Beschränkung des sichtbaren Raum Parallel (Orthographisch) Perspektivisch Frustrum = Kegelstumpf Transformation in Würfel (c) Peter Sturm, Universität Trier 4

Idee Hierarchische Szenenorganisation Logarithmische Komplexität Effizienter Schnitt mit Frustrum Potentiell sichtbare Objekte identifizieren Schnell Trade-off GPU-Kosten Realisierungen Top-Down Aufteilung des Raums (Space Subdivision) Quadtree (2D), Octree (3D) Binary Space Partition Tree (BSP Tree) Bottom-Up Bounding Volumes (c) Peter Sturm, Universität Trier 5

Bounding Volumes Bounding Volume Umfaßt eine Menge von Objekten Einfache geometrische Form Einfacher Schnitttest Positiv: eventuell Schnitt Negativ: Definitiv kein Schnitt (c) Peter Sturm, Universität Trier 6

Anschaulich Realisierungsmöglichkeiten Kugeln Achsenparallele Boxen (AABB) Orientierte Bounding- Boxen (OBB) beliebig gedrehtes AABB Diskrete, orientierte Polytope (k- DOP) (c) Peter Sturm, Universität Trier 7

k- DOP Bewegte Objekte Update Signifikante Positionsänderung? BV- Hierarchie aktualisieren BVs wachsen mit der Objektbewegung Balance- Risiko Temporal Bounding Volume BV umfaßt vorgegebene Zeit der Objektbewegung (c) Peter Sturm, Universität Trier 8

Quad- und Octtree Der Einfachheithalber erst mal 2D Quadtree (c) Peter Sturm, Universität Trier 9

Baumdarstellung 1 2 4 3 = 1 2 3 4 Bemerkungen Rekursive Dekomposition Terminierungskriterium Kein Objekt im Quadranten Genau ein Objekt im Quadranten Kleinste darstellbare Einheit (Pixel) Baum ist nicht zwingend balanciert Quadtree kann Offline berechnet werden (c) Peter Sturm, Universität Trier 10

Octree Quadtree im 3D J Raumkubus wird in 8 Untervolumen geteilt Knoten hat 8 statt 4 Kinder Ansonsten analog zu Quadtree Nicht balanciert Kann Offline berechnet werden Problematisch bei großen Szenen Quadtree und Octree Klassische Mengenoperationen realisierbar Vereinigung Schnitt Differenz Komplement Grobe Funktionsweise? VFC = Schnittoperation? (c) Peter Sturm, Universität Trier 11

BSP BSP Tree Verallgemeinerung von Quadtree und Octree Binary Space Partition Tree = Rekursive, hierarchische Unterteilung eines n- dimensionalen Raumes in konvexe Unterräume Unterteilung durch (n-1)-dimensionale Ebenen Anschaulich: Unterteilung muß nicht zwingend orthogonal sein (c) Peter Sturm, Universität Trier 12

BSP Tree Varianten Axis- Aligned Polygon- Aligned Ausrichtung an einer Objektkante (c) Peter Sturm, Universität Trier 13

Weitere Techniken Noch größere Szenen Wenig sinnvoll, gesamte Landkarte o.ä. als Octree, BSP oder Bounding-Volume-Hierarchie zu speichern? Alternativen? (c) Peter Sturm, Universität Trier 14

Innenräume Portale (Türen) verbinden Räume Portal Culling Backface Culling In sich geschlossene Objekte Rückseiten nicht sichtbar (c) Peter Sturm, Universität Trier 15

Occlusion Culling Verdeckte Objekte weglassen Z- Buffer Ansätze Image- Space 2D nach der Projektion u.a. Z- Buffer Object- Space 3D Ray- Space (c) Peter Sturm, Universität Trier 16

Hardware- Unterstützung Spezieller Rendering- Modus Query an GPU Occlusion Query Diese Polygone bei aktuellem Z- Buffer sichtbar? Polygone beschreiben meist BV Resultat Komplett unsichtbar Anzahl sichtbarer Pixel LOD (Level of Detail) Objektdetails abhängig von Entfernung Situativem Kontext Detail Culling (c) Peter Sturm, Universität Trier 17

6. Software APIs Komplexe Hardware (c) Peter Sturm, Universität Trier 1

Proprietäre APIs Na und? (c) Peter Sturm, Universität Trier 2

... aber OS Konfiguration Feste APIs Transparent für Anwendungen ioctl() und andere Multimedia Innovation Variable / Neue APIs Beispiel 3dfx Glide (c) Peter Sturm, Universität Trier 3

Software Hardware API Standards DirectX Unmanaged (C++) Managed (C#) Shader Microsoft XNA OpenGL WebGL (c) Peter Sturm, Universität Trier 4

DirectX DirectX Laufzeitunterstützung für multimediale Anwendungen Direkter Zugang zu HW- Funktionalität Trotzdem hohe Kompatibilität Kooperation Microsoft mit diversen HW- Herstellern Aushandeln der Funktionalität Seit DirectX 7.0 TnL HAL Hardware Abstraction Layer HAL Hardware DirectX Hardware Emulation Layer HEL (c) Peter Sturm, Universität Trier 5

Funktionsumfang DirectX Graphics DirectDraw: 2D- Graphiken Direct3D (D3D): 3D- Darstellung DirectInput: Eingabegeräte DirectPlay: Networking (Multiplayer) DirectSetup: Installation von DirectX- Anwendungen DirectMusic: Alles was mit Ton zu tun hat DirectSound: (Low- Latency Sound) DirectShow: Streaming Media Historie Erste offizielle Version DirectX 5.0 TnL mit Version 7.0 GPU übernimmt zunehmend höhere Aufgaben Version 9.0c Managed- Zugang Neue Möglichkeiten bei den Shadern Version 10 (Vista) Unified Shader Version 11 (7) Managed weg L (c) Peter Sturm, Universität Trier 6

Wo, Wie groß, Installation http://msdn.microsoft.com Seit Windows 8 Teil des Windows SDK Dokumentation C/C++ ist Teil des SDK C# (allg. managed) war mal L Viele Beispiele Sample Browser DirectX SDK Tools: dxdiag (c) Peter Sturm, Universität Trier 7

Tools: capsviewer Tools: Effect Viewer (c) Peter Sturm, Universität Trier 8

Tools: MeshView Weitere Tools D3DSpy Beobachten der Direct3D- Funktionsaufruf (lokal und remote) DirectPlay Network Simulator DirectX Error Lookup Hexcode Textuelle Beschreibung Texture Tool DMO Tester (DirectX Media Objects) Streaming etc. Force Feedback Editor (c) Peter Sturm, Universität Trier 9

Die Render- Pipeline in D3D Klassische Grundstruktur Fixed Function Pipeline Programmable Pipeline Grundsätzliches Initialisierung Wahl der gewünschten Hardware Wahl des Treibers Konfiguration (Vollbild, ) Beschreibung der 3D- Szene Nutzung vorhandener Primitive (Box, Sphere, ) Nutzung der Basisabstraktionen (Dreieck, ) Wiederholtes Zeichnen der Frames Eingebundenen in die Spielsimulation Game- Loop (c) Peter Sturm, Universität Trier 10

Namespaces Microsoft.DirectX (c) Peter Sturm, Universität Trier 11

Devices Hardware Unterstützung durch Hardware Software Referenz Reine Software- Implementierung Betonung der Funktionalität Effizienz nebensächlich Meist nur auf einem Entwicklungssystem zugänglich Zugang zu einem Device Manager- Objekt (manager) Suche nach geeignetem Adaptor Adapator = eigene HW Z.B. Dual- Head- Karte hat zwei Adaptoren Property: AdapterListEnumerator (Adaptors) Durchlaufen und nach Adapter mit gewünschten Eigenschaften suchen Capabilities Stimmen Fähigkeiten des Geräts mit meinen Anforderungen überein? (c) Peter Sturm, Universität Trier 12

Knotenverarbeitung Primitive setzen sich aus Einzelpunkten zusammen Dreiecke (3 Punkte) Polygonzug Box (8 Punkte) Punkte werden häufig mehrfach verwendet z.b. jeder Punkt einer Box taucht in 6 Dreiecken auf Wo werden Knoten gespeichert und bearbeitet? SoftwareVertexProcessing: Standardisiert HardwareVertexProcessing: Kartenabhängig MixedVertexProcessing Knotenpuffer (Vertex Buffer) p1, p2, p3, p4, p5, p6,... Primitive Interpretation: p4 Point List: p1, p2, p3, p1 Line List: (p1,p2), (p3,p4), p5 Line Stripe: (p1,p2), (p2,p3), (p3,p4), p6 Triangle List: (p1,p2,p3), (p4,p5,p6), Triangle Stripe: (p1,p2,p3), (p2,p3,p4), (p3,p4,p5), Triangle Fan: (p1,p2,p3),(p1,p3,p4), (p1,p4,p5), p2 p3 (c) Peter Sturm, Universität Trier 13

Allgemeine Vorgehensweise Anlegen und Füllen eines VertexBuffer Variable Informationen pro Knoten VertexBuffer mit Device verbinden device.setstreamsource() Zeichnen device.beginscene() device.drawprimitives(type,firstvertex,#vertex) device.endscene() device.present() // Darstellen Welche Informationen pro Knoten Spezielle Klasse CustomVertex (c) Peter Sturm, Universität Trier 14

OpenGL OpenGL DirectX = Microsoft Single Source Alternative: OpenGL Sprach- und plattform- unabhängig Ursprung 1992 (SGI) jetzt Khronos Group Consortium (non- profit) Open* Adobe, AMD/ATI, Apple, ARM, Creative Labs, id Software, Epic Games, Ericsson, Google, IBM, Intel, Motorola, Mozilla, Nokia, Nvidia, Samsung, Sony, Oracle, Texas Instruments Kein Microsoft J (c) Peter Sturm, Universität Trier 15

Architektur Anwendung GLUT GLX / WGL / AGL X / Win32 / Mac OS GLU OpenGL OS- Plattform Windowing System AGL Apple Graphics Library GLX / freeglut /... X Window System WGL Microsoft Windows (c) Peter Sturm, Universität Trier 16

GLU und GLUT GLU (OpenGL Utility Library) Höhere Zeichenfunktionen Mapping zwischen Koordinatensystemen Texturen NURBS (Non- uniform rational B- Splines) GLUT (OpenGL Utility Toolkit) Realisiert OS- Neutralität OpenGL ES OpenGL for Embedded Systems Kompaktes API (c) Peter Sturm, Universität Trier 17

Shader Historie Bis Version 7 Erweiterung der Fixed- Function- Pipeline Aber mit Funktionsverlagerung in die GPU (Transform and Lighting) Erste programmierbare Shader ab Version 8 Starke Restriktionen Mit Version 10 werden GPUs zu echten SIMD- Rechnern (c) Peter Sturm, Universität Trier 18

Umfeld CPU GPU Core Core Shader Shader Hauptspeicher Videospeicher Einbettung Pipeline Vertex Shader Geometry Shader Clipping Screen Mapping Triangle Setup Triangle Traversal Pixel Shader Merger Vertex Shader Modifikationen auf Knotenbasis Geometry Shader Modifikationen auf Primitivbasis Pixel Shader Modifikationen auf Pixelbasis (c) Peter Sturm, Universität Trier 19

Capabilities SM 2.0/2.X SM 3.0 SM 4.0 Einführung DX 9.0, 2002 DX 9.0c, 2004 DX 10, 2007 VS Instruktionsslots 256 >= 512 4096 VS Max. Schritte 65536 65536 beliebig PS Instruktionsslots >= 96 >= 512 >= 65536 PS Max. Schritte >= 96 65536 beliebig Temporäre Register >= 12 32 4096 VS Konstantenregister >= 256 >= 256 14 * 4096 PS Konstantenregister 32 224 14 * 4096 Flow Control Optional Ja Ja VS Texturen Nein 4 128 * 512 PS Texturen 16 16 128 * 512 Integer Support Nein Nein Ja VS Input Register 16 16 16 PS Output Register 4 4 8 Vertex Shader Kleine Assemblerprogramme Anbindbar an einen Vertex Stream Ausführung für jeden Vertex eines Streams Vordefinierte Input- und Hilfsregister Ergebnis steht in vordefinierten Ausgaberegistern Repertoir an Shader- Instruktionen (c) Peter Sturm, Universität Trier 20

Input- und Output- Register Input Output Instruktionen (c) Peter Sturm, Universität Trier 21

Beispiel Pixel Shader Assemblerprogramme Beeinflussen Pixelfarbe Grobarchitektur ähnlich Vertex Shader 2 Instruktionstypen Arithmetische Instruktionen Texturinstruktionen (c) Peter Sturm, Universität Trier 22

Arithmetische Instruktionen Texture Instructions (c) Peter Sturm, Universität Trier 23

Vertex Shader Transformation, Licht Per- Vertex Operationen Pixel Shader Textur- Komposistion Per- Pixel Operation Geoemtry Shader Per- Primitive Operationen Eingabe: beschreibenden Knoten Ausgabe: Stripes (Dreiecke, Linien, Punkte) Ausgabeanzahl wird im Setup festgelegt Hull Shader und mehr Die Shader Shader- Modell, Version 4 Gemeinsame Basis für alle Shader Befehlssatz mit CPU vergleichbar Integer und Bitoperation, Floating Point Erweiterung zu allgemein nutzbaren SIMD- Rechnern Freier Zugriff auf den Speicher Switch- Statements und Unterprogramme Keine Beschränkungen Mehr allgemein zugreifbare Ressourcen Beliebige Instruktionsanzahl (c) Peter Sturm, Universität Trier 24

Genauigkeit IEEE Floating- Point Compliance (fast) Präzises FP32- Rechnen Sampling Blending Mathematische Operationen Konvertierungen Exaktes Zeichnen Optimiertes Anti- Aliasing Aber Assembler? (c) Peter Sturm, Universität Trier 25

Higher Level High Level Shader Language (HLSL) DirectX GLSL OpenGL Shading Language Cg DirectX und OpenGL HLSL (c) Peter Sturm, Universität Trier 26

HLSL 4.0 C- ähnliche Programmiersprache Präprozessor Elementare Datentypen (float, int, bool, ) Operatoren, Variablen, Funktionen, Spezialisierung auf 3D- Graphik Vektortypen sind elementar (float2, float3, float4, ) Geeignete Operationen (Matrizenmultiplikation) Dedizierter Compiler (fxc.exe) Abbildung höherer Funktionen auf Shader- Potential Loop unrolling Umfangreiche Mathematikfunktionalität Reflection möglich Compile at Runtime http://msdn.microsoft.com/en- us/library/windows/desktop/ee663274(v=vs.85).aspx (c) Peter Sturm, Universität Trier 27

Effect Pool XNA: Effects (fx) Effect Technique Variable Pass State Object Constant Shader (c) Peter Sturm, Universität Trier 28

GLSL OpenGL Shading Language Unterschiede im Detail Konverter- Werkzeuge (c) Peter Sturm, Universität Trier 29

Cg C for graphics: Open Source High- Level Shading Language Ersetzt Assembler für Vertex- und Pixel- Shader entstand in Zusammenarbeit mit Microsoft HLSL seit DirectX 9 Vorteile Cross- API (DirectX und OpenGL) Cross- Plattform (Windows, Linux, Mac OS) (c) Peter Sturm, Universität Trier 30

https://developer.nvidia.com/cg- toolkit Funktionsweise Entwicklung der gewünschten Shader Digital Content Creation (DCC) z.b. mittels Maya, 3ds max etc. Spezielle Editoren Spieleprogrammierung Übersetzung durch Cg- Compiler Zum Übersetzungszeitpunkt der Anwendung Zur Laufzeit der Anwendung (c) Peter Sturm, Universität Trier 31

Cg Programme Ersetzen die Assemblerroutinen in DirectX Operieren auf in den Shadern definierten Ein- und Ausgaben Bindung an Programmvariablen über spezielle Syntax Innerhalb des Codes mehr oder weniger C XNA (c) Peter Sturm, Universität Trier 32

XNA Managed runtime für DirectX-Anwendungen Eingeführt 2004 Seit September 2010 XNA Game Studio 4.0 Ziel-Plattformen Windows PC Xbox 360 Windows Phone 7 Umfangreiches Framework (Engine?) (c) Peter Sturm, Universität Trier 33

WebGL (c) Peter Sturm, Universität Trier 34

WebGL seit 2006 Vladimir Vukićević (Mozilla) Verwaltet von Khronos Group (OpenGL) JavaScript API für OpenGL ES (kind of) HTML5 Canvas- Element Zugriff über JavaScript- DOM Mittlerweile auch höhere APIs z.b. Three.js WebGL? (c) Peter Sturm, Universität Trier 35

Multiplayer - rough cut 2015 - Peter Sturm Universität Trier Single Player Ein Benutzer spielt alleine Eventuell Computergegner Non-Player Character (NPC) Peter Sturm, University of Trier 1

Multiplayer Mehrere Benutzer spielen miteinander oder gegeneinander Eventuell füllen Computergegnger auf Multiplayer Online Kontinuierliches Spiel bildet zweite Wirklichkeit Peter Sturm, University of Trier 2

Massive Multiplayer Online MMOGs Sehr hohe Teilnehmerzahlen Oft aufgrund des vorherrschenden Genre MMORPGs genannt Aus Multi-User-Dungeons (MUDs) entstanden rouge Peter Sturm, University of Trier 3

Virtuelle Welten Graphikzentrischer Aufbau einer virtuellen Welt Avatare Unbegrenzte Aufenthaltsdauer Der Weg ist das Ziel Peter Sturm, University of Trier 4

Avatar? Sekundärziele Primär natürlich Geld verdienen virtuell und real Zweite Realität Parallelwelt, Fokus Interaktion Spielwelten Lösen von Aufgaben/Quests Peter Sturm, University of Trier 5

Warum? Warum ein MMOG spielen? Echte (menschliche) Gegner, keine KI Zusammenspiel mit Menschen Virtuelle Freundschaften Flucht in eine virtuelle Welt Macht, Erfolg, Bestätigung Bis hin zur Sucht Nicht-technische Probleme Suchtpotential EverQuest = NeverRest oder EverCrack Komplexe soziale, gesellschaftliche und psychologische Folgen Partnerschaften, Peter Sturm, University of Trier 6

Spieler formen Spiele Abbilder realer Umgangsformen Positive Aspekte Freundschaft Räumliches denkvermögen Strategien / Kreativ Teamfähigkeit Man lernt neue Leute kennen Gleiche Interessen Stipendien / Sponsor / Arbeitsplatz Negative Aspekte Diebstahl Partnerschaften Vandalismus Beleidigung Verrat Mögliche Folgen Soziale Verarmung fehlender persönlicher Kontakte Realitätsverlust mit physischen Folgen Anleitung für das reale Leben Starker sozialer Druck durch Sippen/Clans/Gilden Spielsucht Erste Spezialkliniken/Abteilungen Selbsthilfegruppen Peter Sturm, University of Trier 7

Extremfälle Spieler vergessen das reale Leben Belgier stirbt 2008 an Erschöpfung nach exzessivem stundenlangen Spielen ohne Schlaf 28- jähriger Koreaner stibrt nach 50 Stunden ununterbrochenem Spiel an Dehydrierung Spieler stellen Spielszenen nach 13- jähriger Chinese stirbt; Eltern verklagen Hersteller Spieler können Welten nicht mehr trennen Mitglieder virtuell verfeindeter Gruppen prügeln sich real zu Tode http://www.herolymp.de Peter Sturm, University of Trier 8

Vorteilnahme (Exploits) Speed Hacking / Teleporting Geschwindigkeits- und Positionsmanipulationen Botting Programm kontrolliert den Spielercharakter Mechanics Exploits Überwinden physikalischer Schranken (z.b. durch Wänden gehen) Data Mining Unerlaubter Zugriff auf geschützte Daten Ausbeutung Goldfarmer / Chinafarmer Menschen spielen gegen Bezahlung Erwirtschaften virtuelle Güter und verkaufen diese außerhalb des Spiels Eine Schätzung geht von 400.000 Beschäftigten aus (2008) 80% wohnen in China 500 Million Dollar Markt Peter Sturm, University of Trier 9

Chancen Wirtschaftsfaktor Innovationsmotor Technisch Wissenschaftlich Virtuelle Realitäten Überwindung des Raums Serious Games Gesellschaftliche Akzeptanz Forschungsschwerpunkte Neurobiologie / Psychologie Wie wichtig ist der Körper? Mirror neurons Wirtschaftswissenschaften Virtuelle Güter und Transaktionen Rechtswissenschaften Virtuelle Besitztümer, Rechte, Pflichten, Steuersysteme Informationssysteme Skalierbarkeit, Verteilte Systeme Offene Standards, Open Source Peter Sturm, University of Trier 10