Description
This course is being completely revised this year.
This course provides a broad introduction to computer graphics and imaging. Topics: Input and output devices such as cameras and displays, graphics hardware and software, interactive techniques and the model-view-controller design pattern, typography and page layout, light and color representations, tone reproduction, image filtering, sampling, aliasing and antialiasing, compression, two- and three-dimensional geometry and transformations, modeling techniques including curves and surfaces, reflection models and illumination algorithms, and basic methods for animation.
Prerequisites
CS107, MATH 103.
Programming using C/C++ and OpenGL and use of common graphics tools such as drawing programs and image processing toolkits.
Masters students or students with a strong interest in continuing in graphics should take CS248.
Syllabus
Week |
Dates |
Tue |
Thu |
1 |
Jan 9, 11 |
Introduction |
Drawing |
2 |
Jan 16, 18 |
Geometry |
Transforms |
3 |
Jan 23, 25 |
Typography |
Splines and Interpolation |
4 |
Jan 30, Feb 1 |
Interaction |
Model-View-Controller |
5 |
Feb 6, 8 |
Light and Color |
Digital Cameras |
6 |
Feb 13, 15 |
Displays |
Exposure and Tone Reproduction |
7 |
Feb 20, 22 |
Mattes and Compositing |
Filtering |
8 |
Feb 27, Mar 1 |
Sampling: Aliasing and Antialiasing |
Compression |
9 |
Mar 6, 8 |
Digital Video and HDTV |
Modeling |
10 |
Mar 13, 15 |
Rendering |
Animation |
Information
- Time: 9:30-10:45am, Tu/Th, Winter 2007
- Room: Building 300, Room 300
Course staff mailing list: cs148-wtr0607-staff@lists.stanford.edu
Text and readings
There is one required text for the course.
Peter Shirley
Fundamentals of Computr Graphics, 2nd Edition
- K. Peters, 2006.
In addition, one of the following books on OpenGL are recommended. The first one, the primer, is easy to read and gives a good overview of OpenGL. The second book, often called 'The Red Book" is more detailed and covers more advanced features. These books are recomended not required because most of this information can be found online. In particular, the 2nd Edition of the OpenGL Programming Guide is online.
Edward Angel
OpenGL: A Primer, 2nd Edition
Addison-Wesley, 2005Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis
OpenGL Programming Guide, 5th Edition
Addison-Wesley, 2006
Additional readings will be assigned from journals and conference proceedings, and excerpts from conference tutorials. Only papers NOT available online will be handed out in class. Readings for each lecture are available from the Lectures page.
Assignments and grading
The projects for this quarter involve enhancing a working ray tracer. We will use a a ray tracing system called pbrt. This system is a combined C++ codebase and textbook written in a literate programming language.
The first part of the course involves four assignments:
Assignment 1: Lighting design [Homework1]
Assignment 2: Lazy KD-Tree [Assignment2]
Assignment 3: Realistic Camera Simulation [Assignment3]
Assignment 4: Investigating Importance Sampling [Assignment4]
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 four structured programming assignments will each count as 10% of your grade, and the final programming project will count as 40%. The remaining 20% of your grade will be based on your comments on the lectures. There will be no exams.
Collaboration: For the first four 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: 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 and software
You are welcome and encouraged to do class assignments on your own machines. Although PBRT builds successfully on most systems, the TAs will be able to provide support for compiling PBRT on Linux (on the public Stanford 'myth' machines, see below) and on Windows (via Visual Studio.net 2003). Check out the PBRTInfo page for information about working with the PBRT software.
If you do not wish to develop on a personal machine, you will have access to the 'myth' machines located on the second floor of Sweet Hall. These 3.2 Ghz DELL Dual-Xeon Linux boxes, named myth1 - myth29 are available for remote access. CS348b students are given non-exclusive priority access to these machines.
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, consult this ITSS web page. Registered students will get an extra 200MB of disk quota for the quarter.