This is the Syllabus and readings for the "Graphics Programming" part of the course. The topics lists may not correspond exactly to days.
Overall, there are 5 "topics" so you need to do at least one reading from each. For the first topic, you need to do one of the required readings. For later topics, you can try to find your own reading. If you find an alternate reading, please remember to add it to the appropriate alternate readings page.
1. Topic 1: Graphics Programming Overview
Overview of programming for interactive graphics. Discussion of the basic methods, issues and ideas.
Reading:
- "An Introductory Tour of Interactive Rendering" by Eric Haines. official draft
- strongly recommended - a great overview of all of interactive graphics. Almost as good as reading the entire real-time rendering book (maybe better since its more up to date).
- "Chapter 5.1 - Graphics" in Introduction to Game Development
- An OK survey, at a different level of detail than Haines' article. Haines' survey is really recommended since it really does cover a lot of the basic ideas of the more advanced and modern topics.
- The whole book of Real Time Rendering by Moller and Haines.
- Since the whole book is about the topic, and the whole book is so good, its hard to say how to use the book to get an overview.
no alternate readings
2. Topic 2: Graphics Efficiency
There are 4 subtopics here, you should pick (at least) one reading for each.
I am roughly dividing things as:
- Low level details (getting polygons to the card fast, organizing things for fast transfers, ...)
- High level efficiency tactics (particularly spatial subdivision schemes)
- Trading performance for quality and Image-Based Techniques
- Using Programmable Hardware
2.1 Low level graphics efficiency
Reading:
- Chapter 10 and 11 of ''Real-Time Rendering
- There's a lot of good general stuff here. We'll talk about simplification more later.
- Find your own reading
- I really haven't found great resources. But try to find things that talk about how stripification, caching, efficiency in getting things to the graphics hardware, minimizing state changes, ...
Alternate Readings
2.2 High Level efficiency methods and Spatial Subdivision
- Chapter 9 of Realtime Rendering
- As always, this book is a preferred resource.
- Chapter 9 of 3D Games
- Realtime rendering and software technology (Watt and Policarpo): This is one of the strong parts of this book.
- Rendering the Great Outdoors- Fast Occlusion Culling for Outdoor Environments
- Gamasutra article on using bounding volume trees to accelerate rendering (geared towards outdoor environments where portal and BSP methods are less helpful for culling).
- Something Else
- There is a lot of "folk wisdom" on how to use various spatial datastructures (especially BSP trees) in rendering. A lot of this comes from a time when BSP trees were used as the occlusion prevention method (not just for acceleration). Portal-based techniques might actually be more relevant nowadays.
We'll also touch on spatial subdivision when we talk about collision detection.
Alternate Readings
2.3 Performance / Quality Tradeoffs and Image-Based Techniques
The two big topics here are:
- using pre-rendered things (billboards and imposters)
- using approximate models (level of detail)
We'll probably spend more time on the latter later, but you should find things that discuss these strategies so you understand the basic issues.
- Chapter 8 of Real-time Rendering
- Again, a great resource
Alternate Readings
2.4 Using Programmable Graphics Hardware
Reading:
- Chapters 2 and 4 of OpenGL Shading Langauge (the orange book)
- Gives a nice overview of what you do and why, and is especially useful if you're going to read the rest of the book to actually do it.
- How GPUs Work by Luebke and Humphries IEEEExplorealternate
- a good overview of the basics of what a GPU is and what it does:
- Survey of General-Purpose Computation on Graphics Hardware link
- Although it is about something else (how to use GPUs for things other than graphics), its a great discussion of what it takes to program the GPU.
Alternate Readings