Go Parallel – Multicore Programming & Game Development

Slides:



Advertisements
Ähnliche Präsentationen
Computer Graphics Shader
Advertisements

Hauptseminar - Computer Graphics
Lineare Interpolation - Beispiel
Professional XNA Game Programming
Graphische Datenverarbeitung IV Dr. Markus Heitz.
Funktionsmerkmale und Vorteile Die Intel Core i7 Prozessoren der zweiten Generation verfügen über folgende Funktionsmerkmale: Die Intel® Turbo-Boost-Technik.
Bildverarbeitung Richard Göbel.
Phong Shading (Normaleninterpolation)
Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung
Demoprogramm: Clustering Eine graphische Demonstration verschiedener Clusteringalgorithmen anhand des Clusterings von Punkten im zweidimensionalen Raum.
Parallele Gleichungslöser für die linearen TRACE-Module
Computergrafik Vom Dreieck zum Ego-Shooter Olaf Müller
Displacement Mapping Dynamische Generierung detaillierter Geometrien
Special Effects Realistischeres Rendern einer Scene.
GPU Architectures: GeForce 8, GeForce 9 and Future
Matrix Multiplication on CUDA
Ortsbasierte Sichtbarkeitsanalyse mit digitalen Geländemodellen auf mobilen Endgeräten Roland J. Graf Fachhochschule Salzburg.
FHP - Fachbereich Bauingenieurwesen
Depth of Field Ein Fachvortrag von: Max Goltzsche und Igor Marijanovic Real-Time RenderingBeuth Hochschule für TechnikSoSe 2012.
Projekteilnehmer: Ertas Mutlu Önal Kenan
? Was ist Informatik? Was ist Informatik? Alexander Lange
How to make a PIXAR movie
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
Die folgenden Seiten enthalten eine Anleitung wie man
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Ich Post-Doc am Institut für Computergrafik und Algorithmen, TU Wien
Computergraphische Visualisierungs- verfahren für 3D-Stadtmodelle
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
HTML-Editoren Eine Präsentation von Erik Kulisch.
Dynamische Programmierung mit Anwendung auf Sequence Alignment Problem
Shader.
4.7 Globale Beleuchtungsmodelle
Performancevergleich DSP vs. FPGA
Computerarchitektur AMD Athlon und Multikernprozessoren
ProSeminar WS 2007/08 Leo Hackstein
Ein Vortrag von Simon Bayer
Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und From-Space Nutzung eines Teiles durch das Programm Ist.
Multiprozessoren: Herausforderung für die Software
Helwig Hauser Teil 12: Zusammenfassung All CGR4 revisited.
Helwig Hauser Teil 9: Radiosity Simulation globaler Lichtverteilung.
Helwig Hauser Teil 4: Texturing Farbe, Struktur, Umgebung.
Beleuchtungsmodelle, Schattierungsmodelle
Beleuchtung, inkl. Schatten, Reflexionen
Seminar: Grundlagen Wissenschaftlichen Arbeitens
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
U N I V E R S I T Ä T KOBLENZ · LANDAU Arbeitsgruppe Computergrafik 4. Mai / 35 Projektpraktikum AR mit korrekter Beleuchtung Entwicklung einer.
Augmented Reality mit korrekter Beleuchtung Thorsten Grosch
Diplomarbeit: Echtzeitdarstellung komplexer Landschaften in illustrativer Weise Echtzeitdarstellung komplexer Landschaften in illustrativer Weise Bearbeiter:
Didaktik der Analytischen Geometrie und Linearen Algebra
T. Wallrath Optimierung des Photon Mapping Verfahrens durch Verbesserung der Radiance Estimate Berechnung und Einsatz von Radiosity Photonen.
Komplexitätsmanagment
Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002.
Universität zu Köln WS 2014/15 HKI – Softwaretechnologie 2 (Teil 1) Von Tilo Kochs.
Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken.
26. Oktober 2005Autor: Walter Leuenberger Computeria Urdorf Treff vom 26. Oktober 2005 Suchmaschinen im Internet Google & Co.
Geometric Representation
Stefan Röttger Universität Stuttgart (VIS). Überblick 1. Motivation 2. Shadow Volumes [Crow77] 3. Verfahren ohne Stencil Buffer 4. Demonstrationsfilm.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
AGP, PCIE Bus im Vergleich AGP: Accelerated Graphic Port 1997 von Intel entwickelt. Ab 1998 AGP dann in großem Stil in PCs als Grafikkartensteckplatz verwendet.
Die Renderpipeline.
Direkte Darstellung von Faserinformation durch Kohärenzmaße
Multimedia und Virtual Reality Vorlesung am Martin Kurze Multimedia in 3D.
PhysX auf der GPU in Batman: Arkham Asylum & bei Fluid Simulations Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie.
Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization OpenGL Shading Language.
Global-Illumination: Radiosity
Global Illumination Computergraphik Seminar im Wintersemester 2004/05 bei Prof. Dr. Elmar Schömer von Stephan Wasshausen.
GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz.
Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.
Einführung in OpenGL Seminarvortrag im Rahmen des Bachelorstudiengangs „Scientific Programming“ Tural Bilalov.
 Präsentation transkript:

Go Parallel – Multicore Programming & Game Development “Die Bedeutung von Multicore in der Spieleentwicklung bei Crytek” Keynote from Gaming ISV ISV: Independent Software Vendor Martin Mittring Lead Graphics Programmer

Einer für alle, alle für einen “Die drei Musketiere” Alexandre Dumas, 1844 Wikipedia: The Three Musketeers (Les Trois Mousquetaires) is a novel by Alexandre Dumas, père. It recounts the adventures of a young man named d'Artagnan after he leaves home to become a musketeer. D'Artagnan is not one of the musketeers of the title; those are his friends Athos, Porthos, and Aramis—inseparable friends who live by the motto, "One for all, and all for one". The same day, d'Artagnan is challenged to a duel by three musketeers: Athos, Porthos, and Aramis, who happen to be very close friends and who encounter d'Artagnan one after the other. The four men meet and, d'Artagnan begins to fight Athos (the first challenger). They are interrupted by the Cardinal Richelieu's guards, who threaten to arrest them because duels are forbidden by royal decree. The three musketeers and d'Artagnan unite to defeat the Cardinal's guards. In this manner, the young Gascon earns the respect and friendship of Athos, Porthos and Aramis, and becomes a soldier in the Royal Guard. This is the first step in becoming a Musketeer. It’s interesting but the wikipedia English version reads different from the German one. The English version was marked as too long and detailed. The German version has more structure, a smaller plot, list of people, references to different kind of media. The language in the German version sound less positive and the English one reads more like an Adventure. Different mentalities? Let me tell you about Crytek – because we have a lot of different mentalities – but we all fighting for the same – and it somehow works out. 1894, Maurice Leloir (1851-1940)

Crytek Hauptstudio in Frankfurt 3 weitere Studios (Kiev, Budapest, Sofia) Firmensprache Englisch 30+ Nationalitäten CryEngine 1: PC CryEngine 2: PC, XBox360, PS3

Crytek Spiele Crysis* Far Cry 2007 Electronic Arts PC 2004 Ubisoft PC * nun auch Crysis Wars und Crysis Warhead

Computer Spiele Industrie Produktion: Game (Spiele spezifischer Quellcode) Engine (Wieder verwendbarer Quellcode, Groß, Lizenzierbar) Tools (Editor, Resource Compiler, Plug-ins) Art, Design (3D Objekte, Texturen, Levels) Meilensteine (CXP, Demo, Konkurrenz, Technologie Fenster) Real-time, mehrere Plattformen, Mehrspieler, Cheating Technologie ist im schnellen Wandel: CPU, Fixed Function, Shaders, … , erneut CPU? Marketing, Publisher, Die meisten Spiele werfen keinen Gewinn ab Qualität gegen Performance Wenige % Performance erfordern mehr und mehr Arbeit Multithreading macht es nicht leichter [Sutter05] Production: Went from one guy developing a full game in the kitchen to more than 100 professionals working together years for one game. It’s hard to find good people, challenging to work together because a creative process doesn’t scale easily to multiple people, we need team players, specialists and people giving the overall direction. Engine (reusable code, big , license business): A big engine is an engine with a big source code base. It can provide a lot of features but maintaining, porting, optimizing, finding a bug is much harder. More people are required and that also means communication overhead. An engine can be licensed or licensed out, the first one simplifies game production but is rarely innovative, the second one can bring in extra money but it additional effort. We produce so much data each day, we run into all sort of problems: network bandwidth, storage capacity, main memory limits, shader compilation time, … CXP: Core X Playable – basically a small version of the game polished to define the game look and feel early during production Multiple platforms: XBox360,PS3, maybe Wii, PSP, wide range of PC hardware configuration Marketing: Technology helps to get attention Multithreading does not make it easier: but there is no way around [Sutter05]: The free lunch is over – CPU are not getting faster without doing effort on programmer side, for a while CPUs became faster without us doing anything

Spiel-Engine Herausforderungen Verschiedenste HW (x CPUs, GPU, Speicher) Riesige Welten Produktionsprobleme (Kosten, Zeit, Termindruck) Massen Mehrspieler Qualitätserwartung (HDTV, Anti-Aliasing, Stereo Darstellung, stabile Frame Rate, „Uncanny Valley“) Uncanney Valley: e.g. Final Fantasy Das Diagram rechts unten zeigt das Uncanney Valley (Unheimliches Tal), mehr Details siehe Wikipedia

Multiprocessing in Game Engines CPU (z.B. Doom) += Grafikkarten (Fixed Function) (z.B. Far Cry) += GPU (Shaders) (z.B. Far Cry) += x CPU (MT performancekritische Teile) (z.B. Crysis) Job basierend? Verteilt? Spezialsprache? Far Cry supported fixed function texture blending (required for e.g. GeForce4MX) and pixel shader (up to 3.0, but we avoided dynamic branching for performance reasons)

Warum Grafikkarten schnell sind? OpenGL/DirectX = Erfolgreichste Multiprocessing Sprache? SIMD, VLIW (nicht immer) Optimiert für eine Anwendung (z.B. bi-linearer Filter, Speicherorganisation) Latenz wird versteckt durch verschränktes abarbeiten von Datenpakten SIMD: Single Instruction Multiple Data VLIW : Very Long Instruction Word Das Bild rechts unten zeigt wie ein Paket abgearbeitet wird, eine Instruktion mit hoher Latenz (>1 Taskzyklus) bremst dabei die nachfolgenden Befehle (abwärts) aus. Werden hingegen mehrere Pakte verschränkt abgearbeitet, läßt sich die Latenz verstecken

Kommen wir jetzt zu etwas völlig anderem

Dreiecks Rasterisierung Fest verdrahtet in Grafikkarten Softwarerendering wird weiterhin benötigt (z.B. in CryEngine um Objekte auf Verdeckung zu testen) SW Rasterisierung hat ein Come-back (Larrabee) Gutes Beispiel wie ein Algorithmus parallelisiert werden kann … nun im Detail HW: Hardware SW: Software

Dreiecks Rasterisierung Gegeben: 3 Eckpunkte float2 2D Bildraster

Wo soll rasterisiert werden? Eine klare Definition ist essenziell: Pixelzentrum im Dreieck, Pixels am Rand je nach Kantenrichtung (Ganzzahl) => Keine Löcher => Kein Kanten überzeichnen

Klassischer Ansatz Scan-Line Algorithmus Sonderfälle Serieller Algorithmus

Halb- Raum Die drei Kanten definieren drei Halb-Räume, Im Dreieck wird zu 3 Halb-Raum Tests Umschließendes Rechteck wäre ineffizient

Halb- Raum Pakete Paket von mehreren Pixeln muß bearbeitet werden wenn teilweise im Dreieck Umschließendes Rechteck ist effizient für kleine Dreiecke

Drei Paket Typen Vollständig außerhalb => Paket verwerfen Vollständig innerhalb => Alle Pixel bearbeiten Teilweise innerhalb => Pixel Test nötig

Halb- Raum mit Paketen SIMD freundlich Ganzzahl Arithmetik (exakt, schnell) Vermeidet Verzweigungen Cache freundlich [Nicolas04] SIMD: Single Instruction Multiple Data

Kommen wir jetzt zu etwas völlig anderem

Drei Render Algorithmen Rasterisierung (keine Folie) Ray-tracing (vier Folien) REYES (drei Folien) Die drei Methoden im Vergleich (eine Folie) (kein kompletter oder gerechter Vergleich)

Ray-tracing Einfach auf CPU (Stack Rekursion) [Hauser02a] Ray-tracing Einfach auf CPU (Stack Rekursion) Raumunterteilung um Strahltests zu beschleunigen Rechenintensiv Elegante Lösung Parallel aber nicht cache freundlich Real-time problematisch Computationally intensive: Compared with rasterization Elegant solution: Compared to the rasterization hacks Image made with 3dsMax by Martin Mittring

Ray-tracing Generationen 1/3 Rekursive Strahl-verfolgung Harte Schatten, perfekte Reflektionen / Lichtbrechung, Verdeckung gelöst, Adaptives AA Image from NVidia real-time raytraing demo running on GPU

Ray-tracing Generationen 2/3 Verteilte Strahl-verfolgung [Carp84] mehr Integrations-Samples: Bewegungsunschärfe, unscharfe Reflektionen, Weiche Schatten, DOF, IBL Integration Image is the first famous distributed ray-tracing image

Ray-tracing Generationen 3/3 Globale Beleuchtung mehr Integrations-Samples: Indirekte Beleuchtung © GNU Free Documentation Licensee

REYES, Renderman Lucasfilm Computer Graphics (jetzt Pixar) REYES (Render Everything You Ever Saw) http://alvyray.com/Art/Andre&WallyB_TheMakingOf.pdf Stylized (Cartoony) 10VAX, 2xCryXMP-2, 1xCray XMP-4 , the most powerful machine at the time (four CPUs working in parallel) 1982 XMP 4 0.235 GFlop Todays latest GPU ~1TFLOP Motion Blur: Ed Catmull also made an attempt at this problem. He created a situation of friendly competition in the group which resulted in both teams producing a better result than they would have been without the rivalry. Actually Ed solved the problem too. Rob and Loren invested the “REYES” (Render Everything You’ve Ever Seen / Render Everything You Ever Saw) system. Rob also invented the shade trees. What we now use as shaders on the graphics hardware is basically the same. 1984 Lucasfilm Computer Graphics (jetzt Pixar) Verwendet in Pixar und vielen anderen Filmen: Wall-E, Ratatouille, Transformers, Cars, … [Pixar08]

REYES Rekursive Aufteilung in dice-able Primitiven Sichtbare dice werden grids von Mikropolygonen (~ Pixel Größe) Schattierung pro grid Mikropolygon oder Punkt (Farbe und Position) Renderman Shader Sprache (C ähnliche Syntax) Renderman shader language: similar to HLSL/CG

REYES: Mikropolygon Abtastung Ein Pixel besteht aus vielen verteilten Abtastpunkten DOF, AA, Bewegungsunschärfe (effizienter, weil nach Shading) A-Buffer für OIT Tiled Rendering für bessere Speicher Lokalität, für weniger Speicherverbrauch, für Parallelverarbeitung OIT: Order independent transparency DOF: Depth of Field AA: Anti-aliasing

Die drei Methoden im Vergleich Rasterisierung: Aug-Strahlen, Dreiecke, Transparenzproblematik, GPU Ray-tracing: perfekte Reflektionen / Lichtbrechung, Dreiecke sind limitierend, weniger Real-time: Verteiltes Ray-tracing, Global Illumination REYES: Displacement Mapping, Level of Detail, Anti-Aliasing Shading / Beleuchtung ist orthogonal zur Methode [Hauser02b] Film Realismus statt physikalischer Korrektheit Ambient Occlusion, Hybride Lösungen Movie realism instead of physically correct: Control of the image, light placement, Lighting as a design tool (Stilmittel) AO: Ambient Occlusion, a very well established method used in movie industry and games, much faster to compute than GI and often more controllable.

Fazit “Die Bedeutung von Multicore in der Spieleentwicklung bei Crytek” PS3 (1*2+7 Cell) XBox360 (3*2 PowerPC) Intel/AMD (1/2/4/?) Multi / Many Cores? Diese Präsentation soll motivieren, dafür benutzte ich mein Lieblingsthema: Computergrafik

Querverweise [Nicolas04] Advanced Rasterization, DevMaster.net www.devmaster.net/forums/showthread.php?t=1884 [Carp84] Distributed Ray Tracing, Siggraph 1984 http://www.csie.ntu.edu.tw/~cyy/courses/rendering/05fall/assignments/pres/slides/DRT.ppt [Hauser02a] CGR4- Raytracing (German) http://www.vrvis.at/vr/cgr4/slides/CGR4-2002-RayTracing.pdf [Hauser02b] CGR4- Beleuchtung (German) http://www.vrvis.at/vr/cgr4/slides/CGR4-2002-Beleuchtung.pdf [Sutter05] Herb Sutter, The Free Lunch Is Over Dr. Dobb's Journal, 30(3), March 2005 http://www.gotw.ca/publications/concurrency-ddj.htm [Pixar08] Renderman Movies https://renderman.pixar.com/products/whatsrenderman/movies.html www.crytek.com/inside/presentations