Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Go Parallel – Multicore Programming & Game Development Die Bedeutung von Multicore in der Spieleentwicklung bei Crytek Martin Mittring Lead Graphics Programmer."—  Präsentation transkript:

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

2 Einer für alle, alle für einen 1894, Maurice Leloir ( ) Die drei Musketiere Alexandre Dumas, 1844

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

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

5 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]

6 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)

7 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?

8 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

9 Kommen wir jetzt zu etwas völlig anderem

10 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

11 Dreiecks Gegeben: 3 Eckpunkte float2 2D Bildraster Rasterisierung

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

13 Klassischer Ansatz Scan-Line Algorithmus Sonderfälle Serieller Algorithmus

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

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

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

17 Halb- Raum mit Paketen SIMD freundlich Ganzzahl Arithmetik (exakt, schnell) Vermeidet Verzweigungen Cache freundlich [Nicolas04]

18 Kommen wir jetzt zu etwas völlig anderem

19 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)

20 Ray-tracing Einfach auf CPU (Stack Rekursion) Raumunterteilung um Strahltests zu beschleunigen Rechenintensiv Elegante Lösung Parallel aber nicht cache freundlich Real-time problematisch [Hauser02a]

21 Ray-tracing Generationen 1/3 Rekursive Strahl-verfolgung Harte Schatten, perfekte Reflektionen / Lichtbrechung, Verdeckung gelöst, Adaptives AA

22 Ray-tracing Generationen 2/3 Verteilte Strahl-verfolgung [Carp84] mehr Integrations- Samples: Bewegungsunschärfe, unscharfe Reflektionen, Weiche Schatten, DOF, IBL Integration

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

24 REYES, Renderman Lucasfilm Computer Graphics (jetzt Pixar) Verwendet in Pixar und vielen anderen Filmen: Wall-E, Ratatouille, Transformers, Cars, … [Pixar08] 1984

25 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)

26 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

27 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

28 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

29

30 Querverweise [Nicolas04] Advanced Rasterization, DevMaster.net [Carp84] Distributed Ray Tracing, Siggraph [Hauser02a] CGR4- Raytracing (German) [Hauser02b] CGR4- Beleuchtung (German) [Sutter05] Herb Sutter, The Free Lunch Is Over Dr. Dobb's Journal, 30(3), March [Pixar08] Renderman Movies https://renderman.pixar.com/products/whatsrenderman/movies.html https://renderman.pixar.com/products/whatsrenderman/movies.html


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

Ähnliche Präsentationen


Google-Anzeigen