| Time: |
TR 9:30-10:45 PM |
| Place: |
MEC 214 |
| Instructor: |
David Luebke, luebke@cs.virginia.edu
Office hours: by appointment (Olsson 219) |
| TA: |
Ryan Schubert, rs5ea@virginia.edu
Office hours: TBD (Olsson 002a) |
| Forum: |
Use the
class discussion forum to discuss anything and everything related to the
course or topic of real-time rendering, 3D graphics, 3D games or game engines.
This is the place to ask questions about OpenGL or Cg, to tell your classmates about
resources on the web, or to communicate with your group. You should check
the forum every day or two, especially since the instructor and TA will post
news, changes, or help about the assignments. |
| Assignments: |
Individual assignments: The first two assignments are to be done
individually.
- The pitch (Feb 7): go to the
class forum and post an idea for a game that you would like to work on, or
post your thoughts on the game concepts that have been posted. We will
form groups around the best game ideas that emerge from this discussion.
-
Individual game (Feb 9): use an open-source Java
toolkit to write a simple but complete multiplayer game.
Group projects:
The remaining assignments will be done in the context of group projects.
Each assignment consists of adding a feature to the group's game engine.
Sometimes the same feature can be used to satisfy different assignments; of
course, each group may only use a single feature once. These projects
are to be done individually: you will clearly need to discuss implementation
issues amongst your group, and you are welcome to discuss algorithms and
structures as well, but the research and coding should be primarily individual
efforts.
- Engine core (Feb 16-Mar 3)
-
First individual project (Mar 2-Mar 21)
-
Second individual project (Mar 23-Apr 4)
-
Third individual project
(Apr 6-Apr 13)
- Final game project (Apr
18-May 4)
|
| Project: |
As a semester-long group project you will work on a real-time rendering
application such as a 3D game. This will likely be the most work you have
ever done for a course project, but should also be the most rewarding.
Most of your individual assignments throughout the semester will take the form
of adding a particular feature to your group's game engine. We will also have at
least one non-game project revolving around virtual reconstructions of important
archeological sites.
Be aware that the membership of groups (and thus, the projects that you will
work on) may change throughout the semester. There is value to mixing up groups
and exposing students to different problems, different group dynamics, and
different design styles. However, everyone will get the chance to work on
something that excites them for the final project.
Much more detail coming soon on the format and requirements for this project. |
| Grade Book: |
Check
your grades on Toolkit. |
| E-mail: |
The class e-mail list is
cs446-1@toolkit.virginia.edu.
In general you are encouraged to use the class forum instead of the e-mail list
to ask for help or clarifications on assignments. The e-mail list is mostly for
me to communicate important news to you (such as extensions on assignment
deadlines) in a timely fashion. Please don't send me or the T.A. mail with
specific questions; asking those questions on the forum will (a) share the
question and answer with other students, helping them, and (b) give them a
chance to answer your question faster and yes, often more helpfully, than we'll
be able to. Check the
e-mail archive on Toolkit. |
| Feedback: |
Send
me anonymous feedback on toolkit. Somebody on your team not pulling
their weight? Something about the lectures or assignments bugging you?
Let me know...I can't promise that I will fix it but I do take this feedback
very seriously. |
| Prerequisites: |
Grades of C- or better in CS 445, or permission of instructor. You
will need significant competence in OpenGL or Direct3D for this course, as well
as a solid understanding of the basics of computer graphics. See me if you
have any questions. |
| Description: |
This course will examine real-time rendering of high-quality interactive
graphics. Applications such as video games, simulators, and virtual reality have
recently become capable of near cinematic-quality visuals at real-time rates. We
will study the advances in graphics hardware and algorithms that are making this
possible. Over several projects throughout the semester students will work in
small teams to develop a small 3D game engine incorporating some
state of the art techniques. Examples of these techniques (and topics we will
cover in class) include non-photorealistic rendering, occlusion culling, level
of detail, terrain rendering, shadow generation, image-based rendering, and
physical simulation.
A note of warning: Although the final project is to build a 3D game, this is
not exactly a course about building video games: it is
about building a 3D graphics engine such as sits under the hood of
modern games. The course will be highly technical and a lot of work.
We will not touch on many vital aspects of game design: character AI,
the production process, artist tools, the network layer (for
multiplayer or online games), interface design, multiplatform support,
etc. In other words, don't take the class just because you like playing video games.
|
| Lectures: |
Some lectures are accompanied by Powerpoint presentations,
often from other sources (e.g., NVIDIA presentations at Game Developers
Conference). The original presentations will be included below for your
convenience. For copyright-related reasons, some of these links will only work if
you are browsing from a virginia.edu IP address.
Individual assignment deadlines are showed in red,
group deadlines in green.
| Lecture |
Date |
Demo |
Topic |
Assignment |
| 1 |
1/19 |
Dave: ATI video |
Introduction; overview; graphics hardware then and now [ppt] |
|
| 2 |
1/24 |
Dave again: |
Level of
detail: Intro [ppt] |
|
|
1/26 |
Dean
Abernathy:
Cultural Heritage
demos |
Cultural
Heritage projects: Roman Forum, Coliseum, Pompeii, ...
(Guest lecture: Dean Abernathy) |
Assn 1
out |
| 3 |
1/31 |
Drew Maier: Xbox 360
Perfect Dark |
Level of
detail continued: run-time management [ppt] |
Assn 2 out |
| 4 |
2/2 |
Ewen
Cheslack-Postova: ATI 1800XT demos |
Rendering
engine basics: the scene graph [ppt] |
|
| |
2/7 |
|
CLASS CANCELLED |
Assn 1 "due"
|
| 5 |
2/9 |
Dave: Fight
Night Round 3 PS3 |
Rendering
engine basics: efficient rendering [ppt] |
Assn 2 due |
| 6 |
2/14 |
Ken Arthur |
Visibility:
view-frustum culling, cells and portals [ppt] |
|
| 7 |
2/16 |
Matt Spear:
PS3 |
Visibility:
cell and portals continued, hierarchical Z-buffer, hardware-supported
occlusion queries [ppt] |
Assn 3 out |
| 8 |
2/21 |
Paul
Tschirhart: Project Offset |
Advanced
texturing: point sprites, billboards, special effects [ppt] |
|
| 9 |
2/23 |
Erin Golub: Pixar's LPICS project |
Interactive
rendering of realistic lighting models [ppt]
(Guest lecture: Rui Wang) |
Assn 3 checkpoint
|
| 10 |
2/28 |
|
Programmable
graphics hardware [ppt] |
|
| 11 |
3/2 |
Jiayuan Meng |
Writing vertex and fragment shaders with Cg [ppt]
DROP DATE (March 1) |
Assn 4 out
Mar 3: Assn 3 due |
| |
3/6 -3/10 |
|
SPRING BREAK |
|
| 12 |
3/14 |
Sean
Arietta: Super Mario Sunshine |
Non-photorealistic rendering: toon shading, silhouettes, painting, hatching,
etc [ppt] |
Assn 4
description |
| |
3/16 |
Greg Tylka |
CLASS CANCELLED |
|
| 13 |
3/21 |
Chris Palmer: F.E.A.R. |
NPR
concluded; intro to shadow algorithms [ppt] |
Assn 4
due |
| 14 |
3/23 |
Jiajun
(Isaac) Zhu: XIII |
Shadow
algorithms: shadow volumes [ppt] |
Assn 4
integrated
Assn 5 out |
| 15 |
3/28 |
Ted Yokoyama |
Shadow
algorithms: robust shadow volumes [ppt] |
Assn 5
description |
| 16 |
3/30 |
Travis Sluka |
Shadow
algorithms: shadow maps, smoothies [ppt] |
|
| 17 |
4/4 |
John Dimeo |
Image-based
rendering: images with depth [ppt] |
Assn 5
due |
| 18 |
4/6 |
Meng Tan |
Guest
lecture: Blue noise
(Guest lecture: Greg Humphreys) |
Assn 5
integrated
Assn 6 out |
| 19 |
4/11 |
Gillian
Smith |
CLASS CANCELLED |
Assn 6
description |
| 20 |
4/13 |
Stephen Guy |
Image-based
rendering: pure IBR, hybrid approaches [ppt] |
|
| 21 |
4/18 |
Brad Wells |
Level of
detail: simplification operators & algorithms, geometric & perceptual error, quadrics
& view-dependent LOD [ppt] |
Assn 6
due |
| 22 |
4/20 |
Stephen
Lawrence |
Advanced Lighting & Shading Systems in Production Games
(Guest lecture: Nate Hoobler, Mythic Entertainment, Inc.) |
Assn 6
integrated
Final project out |
| 23 |
4/25 |
John MacDonald |
Balancing the pipeline: finding and eliminating bottlenecks [pdf,
wmv] |
Final
project
description |
| 24 |
4/27 |
Chris White |
Student demo backlog [Guest lecture cancelled due to sick baby] |
|
| 25 |
5/2 |
Matthew
Rodgers |
General-Purpose GPU Computing [ppt] |
|
| |
5/9 |
|
FINAL PROJECTS DUE |
Final
project presentations |
|
| Grading: |
The final grade will be calculated as a weighted average:
-
Individual assignments: 40%
- Group project: 35%
- Group participation: 20%
- Class participation: 5%
Most individual assignments will be performed in the context of the group
project by adding a feature to the game engine. Students will work in
small teams on the group project. All
team members will receive the same grade for the group project. This is not negotiable.
Team members will also evaluate each other's performance; the "group
participation" aspect of your grade will be largely informed by these peer
evaluations. Class participation means coming to class, participating in
discussion, not falling asleep, and "demo duty".I reserve the right to add a
test, quiz, or "practicum exam". |
| Late Policy: |
I don't want people missing class in
order to work on assignments that are due that day. Hence the policy: assignments are always due at the beginning of class on the due date.
However, if you are in class (on time!) that day, you get a free extension
till 11:59 PM that night. Assignments are due at 11:59 PM if there is no
class that day. Assignments one day late
subtract 10%; two days late loses 30%. Two days (48 hours) after the due date,
the assignment will be considered a zero.
Each student has up to five late days to use at his or her discretion
for the individual assignments. Each
late day extends the due time by 24 hours. Late days do not apply to
group-wide deadlines. Let the TA know how many late days you are taking
when you turn in an assignment. |
| Texts: |
Strongly recommended:
Real-Time
Rendering (2nd edition) by Tomas Akenine-Moller and Eric Haines,
AK Peters (2002).
This book is a significant update from the (excellent) first edition, and
contains a great deal of additional material. In particular there are new
chapters on advanced shading techniques, shading capabilities of modern
hardware, and so on. It is an excellent book that anybody planning on a career
in computer graphics ought to own. One of the best aspects of the book is
the accompanying web site, a vast compendium of graphics resources that the
authors keep very up-to-date.
In previous years I required this book, but this year I will give you more
flexibility by just labeling it "recommended". However, if you are serious about
computer graphics or video game design, you must have this book on your
shelf.
GPU Gems:
Programming Techniques, Tips, and Tricks for Real-Time Graphics, edited by
Randy Fernando. This book, while NVIDIA-centric (it's published by them), is
full of extremely useful explanations, shaders, and code samples. It consists of
42 short chapters or "gems", each a concise and useful introduction to a
particular technique. The gems fall into several categories: Natural Effects,
Image Processing, Lighting and Shadows, Materials, Performance and
Practicalities, and Beyond Triangles. Many of these gems would make perfect
individual projects.
GPU Gems II,
edited by Matt Pharr. 2004 was so long ago by computer graphics standards. GPU
Gems II carries on the tradition with another fantastic collection of
well-explained gems. Categories: Geometric Complexity, Shading, Lighting, and
Shadows, High-Quality Rendering, Image-Oriented Computing, General-Purpose
Computation on GPUs, Simulation & Numerical Algorithms. Again, many of these
gems would be great individual projects.
Other books that may be of interest:
3D Game
Engine Design by David H. Eberly, Morgan Kaufmann Publishers
(second edition, 2004). This book makes excellent reading for programmers serious
about writing their own game engine. It is quite mathematical and not for
the faint of heart. It comes with a lot of free software, also available
from the accompanying web page. These include some
very useful little modules, especially for geometric and mathematical
calculations.
Level of Detail for
3D Graphics by D. Luebke, M. Reddy, J. Cohen, A. Varshney, B.
Watson, and R. Heubner, Morgan Kaufmann Publishers (2002). Line your professor's pockets while learning about level of detail, a crucial
tool for real-time rendering. Errata and links to code, models, and
resources at the accompanying web page.
Game Programming Gems (series
editor Mark Deloura). There are three books in the series. Some of the material
is getting a bit dated, but much of it is still very relevant.
Because these are about game design, they include non-graphics topics (e.g.,
character AI). Each book is a collection of "gems", submitted by different
game programmers. Some are short useful code snippets, others are long
involved packages or essays on different aspects of game programming.
|
| Tools: |
See the tools page.
|
| Honor Code: |
The honor code applies to all work turned in for this course. There
will be more detailed instructions regarding the use of previously written code
(yours and others) with the assignments. |