Many thanks to our sponsors!
When and where: Fall 2007, MWF 1:05-1:55, Van Leer C241
Instructors:
Aaron Lanterman (ECE) and
Hsien-Hsin "Sean" Lee (ECE)
(with guest lectures on the Cell processor by Seunghwa Kang and Kamesh
Madduri).
TA:
Yimin
Zhang (ymzhangcn__at__gmail__com) (Klaus 2341).
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.
Goals: This class covers the the
architecture and programming of multicore
processors and graphical processing units (GPUs), using examples
from the algorithmic needs of modern 3-D games (rendering,
collision detection, physics engines, and artifical intelligence),
as well as techniques for adapting
such architectures
for use in scientific applications, as in the GPGPU (General-Purpose GPU)
movement.
The class will focus on inexpensive consumer hardware,
particularly the Playstation 3,
the Xbox 360, and NVIDIA and ATI graphics cards. The
trade-offs between asymmetric
multicore architures (such as the STI Cell BE
used in the Playstation 3) and symmetric
multicore architectures
(such as the triple-Power PC used in the Xbox 360) will be discussed.
Grading will be primarily
based on a series of five programming assignments. There will
also be a final quiz, which will be weighted the same as one of the
assignments.
Further information
Assignments
Schedule
- 8/20: Session 1 - Introduction
(PDF slides, PDF slides 4-up, video)
- 8/22: Session 2 - History of gaming hardware: the 2-D era
(PDF slides, PDF slides 4-up, video)
- 8/24: Session 3 - History of gaming hardware: the 3-D era
(PDF slides, PDF slides 4-up, video)
- 8/27: Session 4 - 3D Rendering Pipeline (I), Day 1
(PPT slides,
video)
- 8/29: Session 5 - 3D Rendering Pipeline (I), Day 2
(video)
- 8/31: Session 6 - 3D Rendering Pipeline (II)
(PPT slides updated on 9/10,
video), Day 1
- 9/3: Labor Day
- 9/5: Session 7 - 3D Rendering Pipeline (II), Day 2
(video)
- 9/7: Session 8 - 3D Rendering Pipeline (III), Day 1
(PPT slides,
video)
- 9/10: Session 9 - 3D Rendering Pipeline (III), Day 2
(video)
- 9/12: Session 10 - Direct3D Basics (I), Day 1
(PPT slides
updated on 9/15;
because of technical difficulties,
no video for the main lecture is available)
- 9/14: Session 11 - Direct3D Basics (I), Day 2
(video)
- 9/17: Session 12 - Direct3D Basics (II), Day 1
(PPT slides,
video)
- 9/19: Session 13 - GPU Architecture
(PDF slides,
PDF slides 4-up,
video)
- 9/21: Session 14 - Guest speaker: Jose Caban, Software Engineer
(Tiger Woods PGA Golf), Electronic Arts Tiburon
- 9/24: Session 15 - Direct3D Basics (II), Day 2
- 9/26: Session 16 - Architectural Overview: Xbox 360 vs. Playstation 3
(PDF slides,
PDF slides 4-up,
video)
- 9/28: Session 17 - Programmable Shaders, Day 1
(PPT slides,
video)
- 10/1: Session 18 - Programmable Shaders, Day 2
(video)
- 10/3: Session 19 - Environment and Bump Mapping
(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.
- 10/5: Session 20 - Projective Textures and Shadow Maps
(PDF slides,
PDF slides 4-up,
video)
- 10/8: Fall break
- 10/10: Session 21 - Phong vs. Gouraud Shading; C# Gotchas
(PDF slides,
PDF slides 4-up,
video)
- 10/12: Session 22 - Introduction to Multithreading
(PDF slides,
PDF slides 4-up,
video)
- 10/15: Session 23 - Multicore Strategies for Games
(PDF slides,
PDF slides 4-up,
video)
- 10/17: Session 24 - More on Multithreading
(PDF slides,
PDF slides 4-up,
video)
- 10/19: Session 25 - Introduction to XNA
(PDF slides,
PDF slides 4-up,
video)
- 10/22: Session 26 - Xbox 360 Deployment, Debugging, and Profiling
(video)
- 10/24: Session 27 - Collision detection: convex objects
(video)
- 10/26: Session 28 - Collision detection: line with triangle
(video)
- 10/29: Session 29 - Rigid Body Physics, Part 1
(video;
supplemental material on quaterions:
PDF slides,
PDF slides 4-up)
- 10/31: Session 30 - Rigid Body Physics, Part 2
(video)
- 11/2: Session 31 - Animation
(PDF slides,
PDF slides 4-up,
video)
- Note: The Cell/B.E. lectures below are based on slides presented
by Hema Reddy of IBM at the
One-Day IBM Cell Programming Workshop at Georgia Tech held
2/6/2007.
- 11/5: Session 32 - Cell/B.E. Introduction: Architecture
(PDF slides,
video)
- 11/7: Session 33 - Cell/B.E. Introduction: Software Development
(PDF slides,
video)
- 11/9: Session 34 - Cell/B.E. Hands-On - The Hello World Program
(PDF slides,
video)
- 11/12: Session 35 - Postprocessing in XNA
(PDF slides,
PDF slides 4-up,
video)
- 11/14: Session 36 - "Classic" GPGPU
(PDF slides,
PDF slides 4-up,
video)
- 11/16: Session 37 - Introduction to CUDA
(video)
- 11/19: Session 38 - Cell/B.E. Programming: DMA
(PDF slides,
video)
- 11/26: Session 39 - Cell/B.E. Programming: SIMD
(PDF slides,
video)
- 11/28: Session 40 - Cell/B.E. Programming Tips & Techniques
(PPT slides,
video)
- 11/30: Session 41 - Cell/B.E. Programming Models
(PPT slides,
video)
- 12/3: Session 42 - Playstation 2 Architecture
(PDF slides,
PDF slides 4-up,
video)
- 12/5: Session 43 - Guest Speaker: Stephen Chenney, Emergent
Game Technologies
- 12/7: In-class closed-book closed-notes written job interview
simulation