CS348B: Computer Graphics: Image Synthesis Techniques


Lecturer: Matt Pharr (mmp at graphics.stanford.edu)

TA: Ian Buck (ianbuck at graphics.stanford.edu)

E-mail: cs348b-spr0203-staff@lists.stanford.edu

Time: 9:30-10:45am, Tuesday and Thursday

Place: 380-380X

Homepage: http://cs348b.stanford.edu

Class directory: /usr/class/cs348b




This class provides a comprehensive introduction to modern rendering algorithms in computer graphics. The primary focus will be physically-based approaches to rendering based on ray-tracing, though other approaches to rendering will be discussed as well.



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.



Matt Pharr

(mmp at graphics.stanford.edu)

Office Hours: Tuesday 10:45-11:45, Bytes Cafe (Packard Building), or by appointment.

        Teaching Assistant

Ian Buck

(ianbuck at graphics.stanford.edu)

Office Hours: Monday 10-12, Gates 382, or by appointment.


Readings and Texts


Required Texts


Matt Pharr and Greg Humphreys,

Physically Based Image Synthesis: Design and Implementation of a Rendering System

Manuscript will be made available electronically.


Optional Texts



Andrew Glassner,
An Introduction to Ray Tracing,
Academic Press.

Available at the bookstore



Michael Cohen and John Wallace,
Radiosity and Realistic Image Synthesis,
Academic Press.

The book by Cohen and Wallace is a good introduction to physically-based rendering, although they emphasize radiosity.


Andrew Glassner,
Principles of Digital Image Synthesis,
Morgan Kaufmann, 1995.

An encyclopedic overview of rendering.




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 system called lrt (for literate ray tracer), which is described by the Physically Based Image Synthesis book.

The first part of the course involves three programming assignments, tentatively planned to be:

Stage 1: Implement ray-surface intersection methods for algebraic surfaces
Stage 2: Implement a realistic lens system model for image synthesis
Stage 3: Implement a Monte Carlo technique known as Metropolis sampling to compute lighting in a scene.

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.

Evaluation criteria: The first three programming assignments will each count as 20% of your grade, and the last programming project will count as 40%. There will be no exams.

Collaboration: For the first three programming projects, 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: Assignments will be handed out giving ample time to complete them; we expect to be turned in by the deadline. 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 and software

Hardware: To do the assignments you will have access to the Stanford Graphics Laboratory. The lab is located in two rooms in the basement of Sweet Hall. One room contains 15 PCs (Dell Optiplex 150, 997 Mhz PIII, 512MB main memory) with NVIDIA Quadro Graphics Cards. These machines are named raptor1 - raptor15 and run RedHat Linux 7.2. The other room contains 15 PCs (Dell Precision 420, 730 Mhz PIII, 256MB) with NVIDIA Quadro Graphics Cards. These machines are named firebird1 - firebird15 and run RedHat Linux 7.2. Use ssh for remote access. Students in CS 348B have non-exclusive priority access to this laboratory, whose door is opened using your Stanford ID.

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 PCs in Sweet Hall.

Rendering competition

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 Tuesday, June 10, 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 2003, the computer graphics conference, in San Diego this July 27-31. Total value: about $1,000.