This course provides a broad overview of the theory and practice of rendering. Classic rendering algorithms will be covered, however, most of the course will cover current results in physically-based rendering algorithms.
Attendees should have a working knowledge of computer graphics (at the level of CS248 and CS348A). In particular, you should fully understand the basic 3D display pipeline, viewing and modeling transformations, simple geometric modeling using polygons and quadrics, and hidden surface algorithms like the z-buffer algorithm.
Solid knowledge of integral calculus and basic geometric algorithms is an absolute must. Some exposure to signal processing and probability is also assumed.
Pat Hanrahan
hanrahan@cs.stanford.edu
Rm 370 Gates Computer Science Building
(650) 723-8530
Office hours: 11:00-12:00noon Tue/Thu
Tim Purcell
tpurcell@graphics.stanford.edu
Rm. 398 Gates Computer Science Building
(650) 723-1367
Office hours: Monday, 5:00 to 7:00 in the Sweet Hall SGI lab
and Wednesday, 4:00 to 6:00 in the Sweet Hall SGI lab
Ada Glucksman
ada@graphics.stanford.edu
Room 368 Gates Computer Science Building
(next to Pat Hanrahan's office)
(650) 725-3724
Office hours: Mon-Fri, 9:00 to 4:30
Andrew Glassner,
An Introduction to Ray Tracing,
Academic Press.
This book contains a collection of chapters written by many of the original inventors of major ray tracing algorithms. It is filled with both practical and theoretical information.
Matt Pharr, Greg Humphreys, Pat Hanrahan,
A Literate Ray Tracer,
Unpublished manuscript.
A work in progress. Chapters will be made available from the class directories.
Michael Cohen and John Wallace,
Radiosity and Realistic Image Synthesis,
Academic Press.
Foley, van Dam, Feiner, and Hughes,
Computer Graphics: Principles and Practice,
second edition in C, Addison-Wesley.
These two textbooks are good additional resources that complement the information in the required text. The book by Cohen and Wallace is the best introduction to physically-based rendering, the rendering equation, and the radiosity method. The textbook by Foley, van Dam, Feiner, and Hughes is the required text for 248, which covered roughly the first half of the book. In this course, we will cover material contained in chapters 13 through 20.
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.
All books are on reserve in the Math and Computer Science Library.
Additional readings will be assigned from research monographs, papers from journals and conference proceedings, and excerpts from conference tutorials. Only papers NOT available online will be handed out in class.
The project for this quarter is to build a working a ray tracer.
To help focus your efforts on the most interesting parts, we have
built a ray tracing systems called lrt (for literate
ray tracer). lrt is is written using
noweb,
a system originally developed by
Don Knuth
and reimplemented and improved by
Norman Ramsey
for describing large software systems.
lrt is a very modular rendering system and provides an
architectural framework for exploring different rendering algorithms.
The first part of the course involves three progamming assignments:
Evaluation criteria:
The first three programming assignments will each count as 10% of your grade,
and the last programming project will count as 50%. There will also be
two written homeworks that each will count 10% of your final grade.
There will be no exams.
Collaboration:
For the first three programming and two written assignments,
you may discuss the assignment with friends, but you are
expected to implement your own solutions.
On the last programming project,
you are permitted (and encouraged) to form teams of two people and
partition your planned extensions among the team members.
Teams may discuss their project with other teams, but may not share code.
Late assignments:
Since each assignment builds on the previous one, it is important that
assignments be completed on time. 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 last 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 348B have non-exclusive priority 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:
Our software will be installed on the Stanford
Graphics Laboratory machines in Sweet Hall. We may also provide one or more 3D
modeling programs. 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. We will make as many of these tools available via ftp as we are
permitted by the terms of our licensing agreements, but we will not support
them on any other platform. Moreover, your code must run on the SGI
machines in Sweet Hall. In particular, we will grade your projects by running
your programs on an SGI using our own test data files.
In case the delight of learning does not sufficiently motivate you to exert
yourselves heroically on the programming assignments, there will also be a
rendering competition. At 3:00pm on Friday, June 2, a judging will be held
to select the best rendering made using the ray tracer you have written in the
course. While grades for the projects are based solely on "technical merit",
the competition will be judged on both "technical merit" and "artistic
impression". The jury, to be named later, will consist of computer graphics
experts from both industry and academia. There will be several awards and one
grand prize - an all-expenses-paid trip to Siggraph 2000 in New Orleans.
Total value: about $1,000.
Copyright © 2000 Pat Hanrahan
Stage 1: Implement ray-surface intersection methods for quadric surfaces.
Finally, in the last part of the course you will
enhance your system so that
it is capable of reproducing an image of a real object,
for example, a gemstone, a puff of smoke, a candle flame, etc.
Check out the
results produced by previous students.
Stage 2: Implement a camera model capable of generating integral
(lenticular) 3D images.
Stage 3: Use Monte Carlo techniques to compute reflections from
glossy surfaces illuminated by area light source.
Hardware and software
Rendering competition