Procedural shading is a technique that has been used for over a decade for computer animation for film and production animation. A shading procedure determines the final color of a point on a rendered surface. Animations using procedural shading are typically rendered in advance, taking seconds to hours to render each frame that is later displayed at 24-30 frames per second. Real-time graphics hardware is reaching the speed and complexity boundary where real-time procedural shading is possible. This course covers the fundamentals of procedural shading, the adaptation of these techniques to real-time systems, the mapping of procedural shaders onto the real-time graphics pipeline, and modifications of this hardware to better support shading. The course includes a blend of lectures, seminar-style discussions, and guest lectures by leaders in the field. Students will complete several short assignments and a project.
Room 364 Gates Computer Science Building
Office hours: After class
SGI Programmable Shading Group
Lecture Schedule and Readings
Texts and ReadingsThere are no required textbooks, but there are several books whose contents are related to the course:Foley, van Dam, Feiner, and Hughes,
Computer Graphics: Principles and Practice,
second edition in C, Addison-Wesley.Steve Upstill,
The RenderMan Companion: A Programmers Guide to Realistic Computer Graphics,
Addison-Wesley, 1989.Anthony Apodaca and Larry Gritz,
Advanced Renderman: Creating CGI for the Motion Pictures,
Morgan Kaufmann, 1999.David Ebert, F. Kenton Musgrave, Darwyn Peachey, Steven Worley, Ken Perlin,
Texturing and Modeling,
second edition, Morgan Kaufmann, 1998.Alan Watt and Mark Watt,
Advanced Animation and Rendering Techniques: Theory and Practice,
ACM Press, 1992.Tomas Moller and Eric Haines,
AK Peters, 1999.Mason Woo, Jackie Neider, Tom David, Dave Shriner, and Mason Woo,The first four books are on reserve in the Math/CS Library (but under CS348B). The remainder of the books should shortly be on reserve in the Math/CS Library under CS448.
OpenGL Programming Guide: The Official Guide to Learning OpenGL (Version 1.2),
third edition, Addison-Wesley, 1999.
Assignments and GradingThere are no exams. There will be five assignments in the course, plus a final project:
Collaboration: For the first three programming assignments, you may discuss the assignment with friends, but you are expected to implement your own solutions. On the final project, you are permitted to form teams of two people and partition your planned project among the team members. Teams may discuss their project with other teams, but may not share code.
- Introductory reading assignment (ungraded)
- Programming Assignment #1: Write a RenderMan shader to simulate the metal cover over a utility valut. We will supply a ready-to-use file as a starting point. (12% of grade)
- Programming Assignment #2: Write a multipass OpenGL shader. We will supply a template program that does multi-pass rendering, and a source of geometric models. (12% of grade)
- Programming Assignment #3: Write a shader using the Stanford real-time programmable shading system. We will supply a template program as a starting point. (12% of grade)
- Prepare for a class debate on some topic; or present a summary of a relevant research paper. (14% of grade)
- Final project -- you will choose your project, subject to approval of the instructors. (50% of grade)
Late assignments: To allow for unforeseeable circumstances, you will be allowed three weekdays of grace during the quarter. Beyond this, late assignments will be penalized by 10% per weekday that they are late. On the final programming project, neither the demo nor the writeup may be late. Incompletes in this course are given only in exceptional circumstances.
Hardware: To do the assignments you will have access to the Stanford Graphics Laboratory. The lab, located in two rooms in the basement of Sweet Hall, contains 15 Silicon Graphics Indigo2 Extremes (250 Mhz R4400, 200K polygons/sec, 128 MB main memory) and 15 Silicon Graphics Octane SIs (175 Mhz R10000, 400K polygons/sec, 128 MB main memory). The Extremes are named firebird1 - firebird15 and run Irix 6.5. The Octanes are raptor1 - raptor15 and run Irix 6.5. Use ssh for remote access. Students in CS 448 have non-exclusive access to this laboratory, whose door is protected by a combination lock.
All students with leland accounts automatically have accounts on these machines. Home directories on these machines are shared with other Stanford Computing Clusters using AFS. If you do not have a leland account, follow these instructions. Registered students will get an extra 60MB of disk quota and 200 pages of print quota for the quarter.
Using other machines: Any software required for the assignments will be installed on the Stanford Graphics Laboratory machines in Sweet Hall. If you prefer working in your dorm room or workplace, and have access to a machine there, you are welcome to do the assignments on your own machines. However, we will not support our software on other machines, and your code must run on the SGI machines in Sweet Hall (we might grant exceptions for the final projects). In particular, we will grade your projects by running your programs on an SGI.