CS 348B - Computer Graphics: Image Synthesis Techniques(Schedule of lectures updated on April 3.)
Spring Quarter, 1998
Marc Levoy
Handout #1
Marc Levoy
Gates Computer Science Building, Room 366
[email protected]
http://graphics.stanford.edu/~levoy
(650) 725-4089
Office hours: Tue/Thu 1:15 - 2:30 and by appointment
Tamara Munzner
Gates Computer Science Building, Room 360
[email protected] or
[email protected]
http://graphics.stanford.edu/~munzner
(650) 723-3154
Office hours: Mon 5-7pm, Wed 7-9pmNote: on the weekends immediately preceeding the due dates of each programming assignment, the instructor and teaching assistant will hold additional office hours in the Sweet Hall SGI lab. Hours TBA. In addition, there will be televised help sessions (SITN channel E3) for each programming assignment in Gates B01. The first two are on Fridays at 3:15-4:05, on April 10 and May 1. The last help session programming assignment will be a different time: Tuesday, May 26, from 5:45-7pm in Gates B01 on SITN channel E1.
Ada Glucksman
Gates Computer Science Building, Room 368
[email protected]
(650) 725-3724
This course surveys the theory and algorithms of realistic image synthesis, a.k.a. rendering. There will be nineteen lectures. The topics to be covered, with approximate dates, are:
March 31 - What is rendering?
April 2 - Basics of ray tracing
April 7 - Sampling theory I
April 9 - Sampling theory II
April 14 - Anti-aliasing I: regular and stochastic supersampling
April 16 - Anti-aliasing II: adaptive supersampling, analytical filtering
April 21 - Texture mapping I: synthesis, parameterization, resampling
April 23 - Texture mapping II: prefiltering, multipass algorithms
April 28 - Light transport and the rendering equation
April 30 - Local illumination I: radiometry, illumination
May 5 - Local illumination II: analytical reflection models
May 7 - Local illumination III: empirical reflection models
May 12 - Spectral representations
May 14 - Global illumination I: shadow algorithms, distribution ray tracing
May 19 - Global illumination II: radiosity formulation
May 21 - Global illumination III: radiosity solution methods
May 26 - Participating media, volume rendering
May 28 - Image-based rendering
June 2 - Non-photorealistic rendering
(Schedule of lectures updated on April 3.)
My handwritten notes for each lecture will be scanned and placed online by the end of the day of the lecture. These will appear in a list on the course home page. If there is sufficient demand, I can also hand out xeroxes of them at the beginning of the following lecture.
Michael Cohen and John Wallace,
Radiosity and Realistic Image Synthesis,
Academic Press.
Andrew Glassner,
An Introduction to Ray Tracing,
Academic Press.
Foley, van Dam, Feiner, and Hughes,
Computer Graphics: Principles and Practice,
second edition in C, Addison-Wesley.
The book by Cohen and Wallace is the best tutorial I've seen on the rendering equation and its solutions. The book by Glassner steps you through the basics of writing a ray tracer, which is our project for the quarter. The textbook by Foley, van Dam, Feiner, and Hughes is (or was, until this year) required for CS 248, which covered roughly the first half of the book. In this course, we will cover chapters 13 through 20. The book is encyclopedic but too superficial for this course, hence my decision to augment it with other readings.
Note: Cohen and Wallace is temporarily out of print, probably because it is more popular than the publisher expected and has sold out. The campus bookstore is xeroxing the entire book for us, in color, with the reluctant permission of the author. These xerox copies will cost less than the book, and they will be on the shelf at the bookstore by April 8 (or so they promise).
We will also read chapters from research monographs, papers from current journals and conference proceedings, and excerpts from conference tutorials. A course reader containing this material will be on the shelf at the bookstore by April 6.
I am placing the following materials on 2-hour reserve at the Stanford Math/Computer Science Library.
Numbers 1 through 3 are the textbooks for the course. Numbers 4 through 7 are textbooks and monographs that cover in depth the mathematical tools and empirical results that I will use in class. You are not expected to master this material beyond the level I present in class. I make these materials available primarily for the curious. Numbers 8 through 12 are compendiums of graphics tricks, hacks, and useful algorithms. These books are so popular that if I don't place them on reserve, you'll have to buy them to read them - not a bad idea in any case.
Also on reserve (permanently) are the proceedings of ACM Siggraph, the premiere forum for publication of research results in the field of computer graphics. I will frequently reference Siggraph papers during my lectures. I encourage you to browse these books; you will find them inspirational in times of suffering and a wellspring of good ideas for your final assignment.
This course assumes familiarity with computer graphics at the level of CS 248. In particular, I assume an understanding of the matrix representation of 3D transformations (FvDFH, chapters 5 and 6), basic line and polygon scan conversion methods (FvDFH, chapter 3), and commonly used hidden-surface algorithms (e.g. Z-buffer, ray tracing) (FvDFH, chapter 15). To make sure everybody is up to speed, I will review the basics of ray tracing in my second lecture.
I also assume knowledge of calculus and linear algebra (one college-level course of each). Knowledge of probability, statistics, and Fourier transforms is helpful in certain parts of the course, but I do not require it.
The project for this quarter is to write a ray tracer. The project is divided into three assignments. In assignment #1, you will assemble the basic building blocks for tracing rays through scenes composed of simple geometric primitives. In assignment #2, you will implement some form of performance acceleration. In assignment #3, you will extend your ray tracer in a way of your own choosing. Example extensions are adaptive stochastic supersampling, the rendering of textures, a more sophisticated local illumination model, distribution ray tracing, or volume ray tracing. Due dates for each assignment will be as follows:
In addition to the programming assignments, there will be two written assignments designed to test your command of the more theoretical aspects of the course. These will be interleaved with the programming assignments as follows:
Evaluation criteria: The first two programming assignments will each count as 20% of your grade, the written assignments will each count as 15% each, and the last programming assignment will count as 30%. There will be no exams.
Collaboration: You may discuss the first two programming assignments with friends, but you are expected to implement your own solutions. On the third programming assignment, you are permitted (and encouraged) to form teams of two or three people and partition your planned extensions among the team members. Teams may discuss this assignment with other teams, but each team is expected to implement the extensions independently. In particular, code must not be shared between teams. The written assignments must be individual efforts.
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 one weekday of grace during the quarter. Beyond this, late assignments will be penalized by 10% per weekday that they are late. On programming assignment #3, 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.2. The Octanes are raptor1 - raptor15 and run Irix 6.4. Use telnet rather than rlogin for remote access. Students in CS 348B have non-exclusive priority access to this laboratory, whose door is protected by a combination lock.
Software: To help focus your attention on the key ideas in each assignment, we will provide an interactive Inventor-based front-end program that allows you to assemble a scene from simple primitives, select viewing parameters, define directional or point light sources, and specify reflectance properties for each object in the scene. We will also provide an X support package that allows you to build a custom user interface for your ray tracer.
Using other platforms: Our front end-program and X support library 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, and assignment #3 will be graded face-to-face in the Sweet Hall laboratory. It is your responsibility to copy and test your code on the Sweet Hall SGI's in time for grading on June 4.
Student accounts: The Sweet Hall SGI workstations share accounts and file servers with the Sweet Hall machine cluster. 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, surf to http://consult.stanford.edu/accountinfo/.
Course directory: Once your account is active, log in to one of these workstations and browse through the directory /usr/class/348b. This will be your course directory. All software and data relevant to the course will be placed here. In particular, this is where you will find the front-end program and X support package for the programming assignments. See the README file for more information. A copy of these tools will also be placed at the anonymous ftp site ftp://graphics.stanford.edu/pub/courses/cs348b
World Wide Web: All class handouts, assignments, reading lists, and lecture notes will be available via the Web at URL http://graphics.stanford.edu/courses/cs348b-98. Hardcopy of all materials will be made available in class. SITN no longer offers courier service for materials that are also online, but you can print them out from the Web. A few copies will also be placed in the handout cabinet in Gates Hall, wing 3B, copy room, (room 377).
Newsgroup: A newsgroup has been set up for this course. It is called su.class.cs348b. Feel free to post news to this group. It is intended for posting questions to your fellow students, flaming at the professor (I may, however, read the newsgroup on occasion!), looking for project partners, etc.
Emailing addresses: To send email to the instructor or a particular TA (in the event we end up with more than one TA), use the individual email addresses listed earlier in this document. For questions directed to the TAs jointly and for other purposes that we will announce throughout the class, use [email protected].
Class emailing list: For items of urgent and universal importance such as clarifications in the assignments or bugfixes related to the support package, your instructors will use an emailing list to contact you, so please make sure we know your email address, i.e. fill in the student questionnaire!
SITN broadcast and recording: To insure that I see the smiling faces of my on-campus students throughout the quarter, I have decided to block on-campus broadcast of the course. For those who cannot attend a particular class, the lectures will be videotaped by SITN and made available through the library system in the usual manner.
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 4:00pm on Thursday, June 4, 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 '98 in Orlando. Total value: about $1,000.