CS448A: Real-Time Graphics Architectures

Kurt Akeley and Pat Hanrahan


Teaching Assistant: Ian Buck


Benchmarking Graphics Hardware
Final Project


High-performance 3D graphics systems are now a part of almost every personal computer. In fact, the two major computational components of a PC are its main processor (CPU) and its graphics processor (now being referred to as the GPU). This course covers the architecture of graphics chips and systems. Topics include the key components of the graphics pipeline including the display, framebuffer, rasterization, texturing and geometry processing stages. More general topics include how graphics chips are different than main processors, and how to quantitatively model and evaluate graphics systems. Finally, we will cover trends in graphics hardware including programmable shading and ray tracing architectures. This course is targetted to both systems students interested in building graphics systems, as well as programmers interested in real-time graphics applications such as games.

The class is open to students with a background in computer graphics or computer systems and architecture. It may be taken for 1 or 3 credits. For 1 credit, each student will be expected to attend all the lectures and participate in discussions. For 3 credits, two projects will be assigned. The first will be to analyze tradeoffs in graphics architectures, and the second will be to design part of a graphics system.


Sep 26: Introduction (Kurt, Pat)
Oct 1: The graphics pipeline (Pat) (papers)
Oct 3: Nuts and bolts (Kurt) (papers)
Oct 8: Performance analysis and characterization (Pat) (papers)
Oct 10: Framebuffers and displays (Kurt)
Oct 15: Rasterization (Kurt)
Oct 17: Texturing (Pat)
Oct 22: Geometry (Kurt)
Oct 24: Parallelism and communication (Pat)
Oct 29: Trends in Graphics Architectures, Tim Van Hook, ATI
Oct 31: UNC High Performance Graphics Hardware, Anselmo Lastra, UNC
Nov 5: Antialiasing (Kurt)
Nov 7: Advanced texturing and shading (Pat)
Nov 12: Programmable shading (Pat)
Nov 14: Ray tracing (Pat)
Nov 19: System issues (Kurt)
Nov 21: Project Meetings
Nov 26: The Design of OpenGL (Kurt)
Nov 28: The Design of RenderMan (Pat)
Dec 3: Final thoughts