Go Parallel – Multicore Programming & Game Development Die Bedeutung von Multicore in der Spieleentwicklung bei Crytek Martin Mittring Lead Graphics Programmer

Download Go Parallel – Multicore Programming & Game Development Die Bedeutung von Multicore in der Spieleentwicklung bei Crytek Martin Mittring Lead Graphics Programmer

Post on 05-Apr-2015

103 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

<ul><li> Folie 1 </li> <li> Go Parallel Multicore Programming &amp; Game Development Die Bedeutung von Multicore in der Spieleentwicklung bei Crytek Martin Mittring Lead Graphics Programmer </li> <li> Folie 2 </li> <li> Einer fr alle, alle fr einen 1894, Maurice Leloir (1851-1940) Die drei Musketiere Alexandre Dumas, 1844 </li> <li> Folie 3 </li> <li> Crytek Hauptstudio in Frankfurt 3 weitere Studios (Kiev, Budapest, Sofia) Firmensprache Englisch 30+ Nationalitten CryEngine 1: PC CryEngine 2: PC, XBox360, PS3 </li> <li> Folie 4 </li> <li> Crytek Spiele Far Cry 2004 Ubisoft PC 2007 Electronic Arts PC Crysis* * nun auch Crysis Wars und Crysis Warhead </li> <li> Folie 5 </li> <li> 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 Qualitt gegen Performance Wenige % Performance erfordern mehr und mehr Arbeit Multithreading macht es nicht leichter [Sutter05] </li> <li> Folie 6 </li> <li> Spiel-Engine Herausforderungen Verschiedenste HW (x CPUs, GPU, Speicher) Riesige Welten Produktionsprobleme (Kosten, Zeit, Termindruck) Massen Mehrspieler Qualittserwartung (HDTV, Anti-Aliasing, Stereo Darstellung, stabile Frame Rate, Uncanny Valley) </li> <li> Folie 7 </li> <li> Multiprocessing in Game Engines I.CPU (z.B. Doom) II.+= Grafikkarten (Fixed Function) (z.B. Far Cry) III.+= GPU (Shaders) (z.B. Far Cry) IV.+= x CPU (MT performancekritische Teile) (z.B. Crysis) V.Job basierend? Verteilt? Spezialsprache? </li> <li> Folie 8 </li> <li> Warum Grafikkarten schnell sind? OpenGL/DirectX = Erfolgreichste Multiprocessing Sprache? SIMD, VLIW (nicht immer) Optimiert fr eine Anwendung (z.B. bi-linearer Filter, Speicherorganisation) Latenz wird versteckt durch verschrnktes abarbeiten von Datenpakten </li> <li> Folie 9 </li> <li> Kommen wir jetzt zu etwas vllig anderem </li> <li> Folie 10 </li> <li> Dreiecks Rasterisierung Fest verdrahtet in Grafikkarten Softwarerendering wird weiterhin bentigt (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 </li> <li> Folie 11 </li> <li> Dreiecks Gegeben: 3 Eckpunkte float2 2D Bildraster Rasterisierung </li> <li> Folie 12 </li> <li> Wo soll rasterisiert Eine klare Definition ist essenziell: Pixelzentrum im Dreieck, Pixels am Rand je nach Kantenrichtung (Ganzzahl) =&gt; Keine Lcher =&gt; Kein Kanten berzeichnen werden? </li> <li> Folie 13 </li> <li> Klassischer Ansatz Scan-Line Algorithmus Sonderflle Serieller Algorithmus </li> <li> Folie 14 </li> <li> Halb- Raum Die drei Kanten definieren drei Halb-Rume, Im Dreieck wird zu 3 Halb-Raum Tests Umschlieendes Rechteck wre ineffizient </li> <li> Folie 15 </li> <li> Halb- Raum Pakete Paket von mehreren Pixeln mu bearbeitet werden wenn teilweise im Dreieck Umschlieendes Rechteck ist effizient fr kleine Dreiecke </li> <li> Folie 16 </li> <li> Drei Paket Typen Vollstndig auerhalb =&gt; Paket verwerfen Vollstndig innerhalb =&gt; Alle Pixel bearbeiten Teilweise innerhalb =&gt; Pixel Test ntig </li> <li> Folie 17 </li> <li> Halb- Raum mit Paketen SIMD freundlich Ganzzahl Arithmetik (exakt, schnell) Vermeidet Verzweigungen Cache freundlich [Nicolas04] </li> <li> Folie 18 </li> <li> Kommen wir jetzt zu etwas vllig anderem </li> <li> Folie 19 </li> <li> 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) </li> <li> Folie 20 </li> <li> Ray-tracing Einfach auf CPU (Stack Rekursion) Raumunterteilung um Strahltests zu beschleunigen Rechenintensiv Elegante Lsung Parallel aber nicht cache freundlich Real-time problematisch [Hauser02a] </li> <li> Folie 21 </li> <li> Ray-tracing Generationen 1/3 Rekursive Strahl-verfolgung Harte Schatten, perfekte Reflektionen / Lichtbrechung, Verdeckung gelst, Adaptives AA </li> <li> Folie 22 </li> <li> Ray-tracing Generationen 2/3 Verteilte Strahl-verfolgung [Carp84] mehr Integrations- Samples: Bewegungsunschrfe, unscharfe Reflektionen, Weiche Schatten, DOF, IBL Integration </li> <li> Folie 23 </li> <li> Ray-tracing Generationen 3/3 Globale Beleuchtung mehr Integrations- Samples: Indirekte Beleuchtung GNU Free Documentation Licensee </li> <li> Folie 24 </li> <li> REYES, Renderman Lucasfilm Computer Graphics (jetzt Pixar) Verwendet in Pixar und vielen anderen Filmen: Wall-E, Ratatouille, Transformers, Cars, [Pixar08] 1984 </li> <li> Folie 25 </li> <li> REYES Rekursive Aufteilung in dice-able Primitiven Sichtbare dice werden grids von Mikropolygonen (~ Pixel Gre) Schattierung pro grid Mikropolygon oder Punkt (Farbe und Position) Renderman Shader Sprache (C hnliche Syntax) </li> <li> Folie 26 </li> <li> REYES: Mikropolygon Abtastung Ein Pixel besteht aus vielen verteilten Abtastpunkten DOF, AA, Bewegungsunschrfe (effizienter, weil nach Shading) A-Buffer fr OIT Tiled Rendering fr bessere Speicher Lokalitt, fr weniger Speicherverbrauch, fr Parallelverarbeitung </li> <li> Folie 27 </li> <li> 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 Lsungen </li> <li> Folie 28 </li> <li> 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 Prsentation soll motivieren, dafr benutzte ich mein Lieblingsthema: Computergrafik </li> <li> Folie 29 </li> <li> Folie 30 </li> <li> Querverweise [Nicolas04] Advanced Rasterization, DevMaster.net www.devmaster.net/forums/showthread.php?t=1884 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 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 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 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 http://www.gotw.ca/publications/concurrency-ddj.htm [Pixar08] Renderman Movies https://renderman.pixar.com/products/whatsrenderman/movies.html https://renderman.pixar.com/products/whatsrenderman/movies.html www.crytek.com/inside/presentations </li> </ul>