<!– –>
Multicore and GPU Programming for Video Games
Many thanks to our sponsors!
When and where: Fall 2008, MWF 1:05-1:55, Van Leer C241
Instructors:
Aaron Lanterman (ECE) and
Hsien-Hsin “Sean” Lee (ECE)
Webpage for the Fall 2007
offering of the course
Prereqs:
ECE3035: Mechanisms for Computation or CS2110: Computer Organization
and Programming. Students must be comfortable with C programming.
To be widely accessible to ECE students, no background in computer
graphics will be required.
Course objective:
This class provides the multicore and GPU programming skills needed to
meet timely demands of the multimedia, visualization, and gaming
industries. The course also bridges the gap
between our current generic computer architecture courses and the video
game design courses
offered by the College of Computing.
The class covers two major aspects. We will first discuss
state-of-the-art GPU
architectures and
multicore architectures from application and
hardware design perspectives. We then also consider
examples from the algorithmic needs
of modern 3-D games (e.g. geometry
processing, shading algorithms,
physical modeling, collision detection, and artificial intelligence),
as well as techniques for adapting
inexpensive GPU and multicore architectures for potential use in scientific
applications.
Projects:
Students will be expected to
undertake several projects to gain real programming experience on
the Cell processor, the Xbox 360, and NVIDIA or ATI graphics cards. NVIDIA
and ATI have made donations of several boards to support our class projects.
The IBM Center of Competence at Georgia Tech also has generously provided
access to their Cell blade system.
The final letter grade will be based on performance on these projects.
Further information
- Important: Software
used in this class – links
to programs (SDKs, etc.)
you want to get if you want to work on your own machine (which
is strongly encouraged) - Related classes
(both at GaTech and other schools) - Students Explore Video Game Programming and Architecture
in New Course – article on the class from Volume 4, Issue 4 of the
ECE Highlights newsletter -
Video interview
with Aaron Lanterman about the class,
conducted by gamezombie.tv at the 2007 Game Developers Conference - Original
course proposal webpage – explains some of
our original motivations for
putting the class together (although some of what’s described will be
out of date) - Research by people in the game industry:
- Valve
Publications (including papers on shading in
Half-Life 2 and Team Fortress 2) - Insomniac
R&D – notice how deep they are into
Cell SPU assembly programming!
- Valve
-
GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics
(complete book online) -
GPU Gems 2: Programming Techniques for High-Performance Graphics and
General-Purpose Computation (complete book online) - The Cg Tutorial (complete book online)
Assignments
- HW #1: History & Visual Studio
(due Friday, Sept. 5
at start of lecture) - HW #2: “Roll Your Own” 3-D Rendering
(due Wednesday, Sept. 24 at 23:59:59 via T-square) - HW #3: Adding a Dimension
(due Thursday, Oct. 2 at 23:59:59 via T-square) - HW #4: Now You Are Thinking with Shaders
(due Thursday, Oct. 16 at 23:59:59 via T-square) - HW #5: Shaded First Person Shooter
(due Wednesday, Nov. 5 at 23:59:59 via T-square) - HW #6: Aperture Science Xbox
Multicorification Center (“6A checkpoint” due
Tuesday, Nov. 18 at 23:59:59 via T-square;
“6B boss battle” due Tuesday, Nov. 25 at 23:59:59 via T-square) - HW #7: The Cell (“7A checkpoint” due
Friday, Dec. 5 in class at the start of class;
“7B boss battle” due Sunday, Dec. 7 at 5:00 PM via T-square)
<!–
- HW #1:
“Roll Your Own” 3-D Rendering (due Mon, Sept. 24 at midnight) - HW #2: Direct3D First Person Shooter
(due Thursday, Oct. 11 at midnight) - HW #3: Now you are thinking with
Shaders (due Tuesday, Oct. 30 at midnight) - HW #4: Aperture Science Xbox
Multicorification Center (“4A checkpoint” due Wed, Nov. 14 at midnight;
“4B boss battle” due Wednesday, Nov. 21 at 5:00 PM) - HW #5: The Cell
(“5A checkpoint” due Friday, Dec. 7 at 5:00 PM; “5B boss battle” due
Thursday, Dec. 13 at midnight)
–>
Schedule
- 8/18: Session 1 – Introduction
(PDF slides, PDF slides 4-up,
video)- These videos were not shown in lecture, so be sure to check them
out:
Halo 3
Documentary HD,
Ratchet and Clank (PS3) Insomniac Net-Gen Game Design Interview HD,
Ian Bogost
on The Colbert Report
- These videos were not shown in lecture, so be sure to check them
- 8/22: Session 2 – History of gaming hardware: the 2-D era
(PDF slides, PDF slides 4-up, video)- Videos: Intellivision TV Commercials –
Plimpton Sports,
Major League Baseball,
Star Strike;
Colecovision 1980s
Commercial;
Atari E.T. Commercial;
SEGA Commercial –
Sega vs. Nintendo (“Blast Processing”),
Genesis
Does What Nintendon’t
- Videos: Intellivision TV Commercials –
- 8/24: Session 3 – History of gaming hardware: the 3-D era
(PDF slides,
PDF slides 4-up, video)- Videos:
Insomniac’s
“Disruptor”:
gameplay,
cutscene;
Konami’s “Metal
Gear Solid”;
Rare’s
“Goldeneye 007”;
Namco’s
“Soul Calibur”;
John Carmack’s
“id tech 5” demo at WWDC
- Videos:
- 8/25: Session 4 – 3D Rendering Pipeline (I), Day 1
(PDF slides,
PDF slides 4-up,
video) - 8/27: Session 5 – 3D Rendering Pipeline (I), Day 2
(video) - 8/29: Session 6 – 3D Rendering Pipeline (II), Day 1
(PDF slides,
PDF slides 4-up,
sorry, no video) - 9/3: Session 7 – 3D Rendering Pipeline (II), Day 2;
(video) - 9/5: Session 8 – 3D Rendering Pipeline (II), Day 3;
3D Rendering Pipeline (III), Day 1
(PDF slides,
PDF slides 4-up,
video) - 9/8: Session 9 – 3D Rendering Pipeline (III), Day 2
(video) - 9/10: Session 10 – 3D Rendering Pipeline (III), Day 3
(video) - 9/12: Session 11 – Introduction to XNA Game Studio
(PDF slides,
PDF slides 4-up,
video) - 9/15: Session 12 – Game Loops & XNA Content Pipeline
(PDF slides,
PDF slides 4-up,
video) - 9/17: Session 13 – Drawing Models & Primitives with BasicEffect
(PDF slides,
PDF slides 4-up,
video) - 9/19: Session 14 – Guest Speaker: Jose Caban (Software Engineer,
Electronic Arts Tiberon) – Making the Tiger Woods Golf Engine
Truly Multi-Threaded (PDF
slides 4-up) - 9/22: Session 15 – A Walkthrough of an XNA 2D game
(PDF slides,
PDF slides 4-up,
video)- Material to needed build Prof. Lee’s 2D game:
source code,
content
- Material to needed build Prof. Lee’s 2D game:
- 9/24: Session 16 – More XNA Basics, Part 1
(PDF slides,
PDF slides 4-up,
video) - 9/26: Session 17 – More XNA Basics, Part 2
(video) - 9/29: Session 18 – XNA and Programmable Shaders, Part 1
(PDF slides,
PDF slides 4-up,
video) - 10/1: Session 19 – XNA and Programmable Shaders, Part 2
(video) - 10/3: Session 20 – XNA and Programmable Shaders, Part 3 (sorry no video)
- Prof. Lee’s DungeonShooter code
- 10/6: Session 21 – Environment and Bump Mapping, Part 1
(PDF slides,
PDF slides 4-up,
video) - 10/8: Session 22 – Environment and Bump Mapping, Part 2
(video) - 10/10: Session 23 – Projective Textures and Shadow Maps
(PDF slides,
PDF slides 4-up,
video)- C. Everitt,
Projective Texture Mapping - C. Everitt, A. Rege, C. Cebenoyan,
Hardware
Shadow Mapping
- C. Everitt,
- 10/15: Session 24 – Postprocessing
(PDF slides,
PDF slides 4-up,
video) - 10/17: Session 25 – “Classic” GPGPU
(PDF slides,
PDF slides 4-up,
video) - 10/20: Session 26 – GPUs – Under the Hood
(PDF slides,
PDF slides 4-up,
video) - 10/22: Session 27 – Architectural Comparison: Xbox 360 vs. Playstation 3
(PDF slides,
PDF slides 4-up,
video)- Xbox
360 System Architecture,
IEEE Micro, Vol. 26, No. 2,
March-April 2006, pp. 25-37.
- Xbox
- 10/24: Session 28 – Introduction to Multithreading, Part 1
(PDF slides,
PDF slides 4-up,
video)- Threading in C#
by Joseph Albahari (hat tip to Travis Gockel for
pointing out the link)
- Threading in C#
- 10/27: Session 29 – Introduction to Multithreading, Part 2
(video) - 10/29: Session 30 – Introduction to Multithreading, Part 3
(sorry I forgot the video camera that day) - 10/31: Session 31 – Multicore Strategies for Games, Part 1
(PDF slides,
PDF slides 4-up,
video)- Bruce Dawson,
Coding
for Multiple Cores on Xbox 360 and Microsoft Windows (the
code examples are C++, not C#, but many of the ideas still apply) - Bruce Dawson and Chuck Walbourn, PowerPoint presentation,
Coding for Multiple Cores - Blog entries by The Pensive Gamer:
XNA Game Loop
and Threading,
XNA Threading – The Problems,
XNA Threading – Locks
- Bruce Dawson,
- 11/3: Session 32 – Multicore Strategies for Games, Part 2
(video to be posted) - 11/5: Session 33 – Xbox 360 Deployment
(PDF slides,
PDF slides 4-up,
video) - 11/7: Session 34 – Xbox 360 Debugging & Monitoring
(PDF slides,
PDF slides 4-up,
video) - 11/10: Session 35 – Playstation 2 Architecture
(PDF slides,
PDF slides 4-up,
video) - 11/12: Session 36 – Hello Cell
(PDF slides,
PDF slides 4-up,
video to be posted)-
Introduction
to the Cell multiprocessor,
IBM Journal of Research and Development, Vo. 49,
2005, pp. 589-604. -
Synergistic
Processing in
Cell’s Multicore Architecture, IEEE Micro, Vol. 26, No. 2, March-April
2006, pp.10-24. - The
Cell project at IBM Research -
Programming
high-performance applications on the Cell BE
processor, Part 1: An introduction to Linux on the PLAYSTATION 3 - The
Insomniacs: Can a team of scrappy game programmers
save Sony’s monster chip?, IEEE Spectrum, Dec. 2006, pp. 24-29. - The Potential of the Cell Processor for Scientific
Computing
-
- 11/14: Session 37 – Asynchronous Hello Cell
(PDF slides,
PDF slides 4-up,
video to be posted) - 11/17: Session 38 – Cell Programming Concepts
(Cell BE – An Introduction (ppt),
Cell BE Basic Programming Concepts (ppt),
video) - 11/19: Session 39 – Cell SIMD, Part 1
(Developing Code for Cell – SIMD (ppt),
Hands-on SIMD (ppt),
video) - 11/21: Session 40 – Cell SIMD, Part 2
(video) - 11/24: Session 41 – Guest Speaker: Ben Wallace, Bungie
- 11/26: Session 42 – Cell DMA, Part 1
(Developing Code for Cell – DMA & Mailboxes (ppt),
Hands-on DMA 1 (ppt),
Hands-on – DMA
Transfer Using get and put Buffer (pdf),
Hands-on – DMA Transfer
Using Control Block (pdf),
Developing Code for Cell – DMA,
video)- Cell
BE Programming Handbook (see Chapter 19)
- Cell
- 12/1: Session 43 – Cell DMA, Part 2
(video) - 12/3: Session 44 – Larrabee
PDF slides- Larabee: A Many-Core x86 Architecture for Visual Computing,
ACM Transactions on Graphics, August 28
- Larabee: A Many-Core x86 Architecture for Visual Computing,
- 12/5: Session 45 – Wrap-up
<!–
- Supplemental material:
PPT on rotations around
an arbitrary axis – not covered in lecture
(PPT slides updated on 9/10,
video), Day 1
(video)
(PPT slides,
video)
(video)
(PPT slides
updated on 9/15;
- Example
code for lectures on “Direct3D Basics (I)” (adapts Win32 template code
by Frank Luna; D3D internals code mostly written by Prof. Lee) - F. Luna, Introduction to 3D Game Programming
with Direct X 9.0c: A Shader Approach – The class has no required
texts, but if you wanted to get more into Direct3D game programming and
wanted to pick up a book on the topic, this is probably one of the better
ones. - Moon Labs website
for Frank Luna’s books (including a lot of example code) - Prof. Lee also recommends
www.directxtutorial.com
(video)
(PPT slides,
video)
- Some example
code for lectures on “Direct3D Basics (II)” (adapts Win32 template code
by Frank Luna; D3D internals code mostly written by Prof. Lee)
(PDF slides,
PDF slides 4-up,
video)
(Tiger Woods PGA Golf), Electronic Arts Tiburon
- No time off from EA’s cool capers, Orlando Sentinel, Oct. 15,
2007.
- Even more example code for lectures on
“Direct3D Basics (II)”
(adapts Win32 template code
by Frank Luna; D3D internals code mostly written by Prof. Lee)
(PDF slides,
PDF slides 4-up,
video)
- Xbox
360 System Architecture,
IEEE Micro, Vol. 26, No. 2,
March-April 2006, pp. 25-37.
(PPT slides,
video)
- Example
code for lectures on “Programmable Shaders”
by Prof. Lee
(video)
(PDF slides,
PDF slides 4-up,
video)
- The Cg Tutorial – This
class has no required texts,
but this is a good introduction to shader coding and typical tricks, and
formed the basis of a lot of the lecture slides. (It is a bit short
on info on hooking your Cg code into the main 3D API; you’ll need to
look elsewhere for that.) - The
Cg Tutorial resources from the NVIDIA website –
you can download the Cg Toolkit and the example code from the text here. It’s
fairly easy to install and run the examples.
All of the code shown in lecture was from The Cg Tutorial.
(PDF slides,
PDF slides 4-up,
video)
- C. Everitt,
Projective Texture Mapping - C. Everitt, A. Rege, C. Cebenoyan,
Hardware
Shadow Mapping
(PDF slides,
PDF slides 4-up,
video)
(PDF slides,
PDF slides 4-up,
video)
(PDF slides,
PDF slides 4-up,
video)
- Bruce Dawson,
Coding
for Multiple Cores on Xbox 360 and Microsoft Windows (the
code examples are C++, not C#, but many of the ideas still apply) - Bruce Dawson,
Lockless
Programming Considerations for Xbox 360 and Microsoft Windows
(PDF slides,
PDF slides 4-up,
video)
(PDF slides,
PDF slides 4-up,
video)
(video)
(video)
- Jeff Lander,
When Two Hearts Collide: Axis-Aligned Bounding Boxes (requires
you to sign up for Gamasutra, which is free) -
Unreal Engine 2 Collision Tutorial
(video)
(video;
supplemental material on quaterions:
PDF slides,
PDF slides 4-up)
(video)
(PDF slides,
PDF slides 4-up,
video)
by Hema Reddy of IBM at the
One-Day IBM Cell Programming Workshop at Georgia Tech held
2/6/2007.
(PDF slides,
video)
-
Introduction
to the Cell multiprocessor,
IBM Journal of Research and Development, Vo. 49,
2005, pp. 589-604. -
Synergistic
Processing in
Cell’s Multicore Architecture, IEEE Micro, Vol. 26, No. 2, March-April
2006, pp.10-24.
(PDF slides,
video)
- The
Cell project at IBM Research -
Programming
high-performance applications on the Cell BE
processor, Part 1: An introduction to Linux on the PLAYSTATION 3 - The
Insomniacs: Can a team of scrappy game programmers
save Sony’s monster chip?, IEEE Spectrum, Dec. 2006, pp. 24-29. - The Potential of the Cell Processor for Scientific
Computing
(PDF slides,
video)
(PDF slides,
PDF slides 4-up,
video)
(PDF slides,
PDF slides 4-up,
video)
(video)
(PDF slides,
video)
(PDF slides,
video)
(PPT slides,
video)
(PPT slides,
video)
(PDF slides,
PDF slides 4-up,
video)
Game Technologies
simulation
–>