Computer Graphics
Number: CSD 15-462
Instructor: Nancy Pollard
Teaching Assistants: Ilya Gershgorin
Wuming Xie
Chun How Tan
Office Hours:
Pollard: By Appointment
Chun How: Sun 8-10pm
Wuming: Tue 8-10pm
Ilya: Thurs 8-10pm
Time: MW 9:00AM - 10:30AM
Location: MM 103 (Lecture)
GHC 5205 (TA Office Hours)
Bulletin Board: cmu.cs.class.cs462
(Instructions here.)


This course provides a comprehensive introduction to computer graphics modeling, animation, and rendering. Topics covered include basic image processing, geometric transformations, geometric modeling of curves and surfaces, animation, 3-D viewing, visibility algorithms, shading, and ray tracing.



The programming assignments in this course will be written in C++ and require knowledge of mathematics involving matrices, vectors, etc. Therefore successful completion of the following courses is required:

15-213/18-243 Introduction to Computer Systems

and either

18-202 Mathematical Foundations of Electrical Engineering

or both

21-241 Matrix Algebra, and
21-259 Calculus in Three Dimensions

Once you've completed 15-462, you may be interested in other courses offered by the Carnegie Mellon Graphics Lab.


There are two required textbooks for 15-462 this semester:

Shirley, Peter et. al. Fundamentals of Computer Graphics. 3rd ed. Wellesley: A K Peters, 2005.

OpenGL® Architecture Review Board. OpenGL® Programming Guide. 6th ed. Boston: Addison-Wesley, 2007.

An older edition of the OpenGL® Programming Guide (covering the OpenGL® 1.1 specification) may be found online here and should be sufficient for the purposes of this course. However, the printed text may be of interest as it is newer than the online version and covers the OpenGL® 2.1 specification.

Assignments & Grading

Homeworks have a way of not working their way into the schedule, but students need them to practice for the exams. Let.s try something different for this semester. I.m going to ask students to keep a .notebook. of solved homework problems . typically just one or two example problems per class. Every 2-3 weeks, they will turn in their notebooks. Grading will be kept simple . 1, 2, or 3 points per problem. (Basically, 1 point for an attempt, 2 points for something close to the correct answer, 3 points for a correct answer.) I don.t want any of us to have to spend a lot of time on this.
  • (5%) Notebook 1
  • (5%) Notebook 2
  • (5%) Notebook 3
  • (5%) Notebook 4 (Not required anymore)
  • (10%) Project 1
  • (10%) Project 2
  • (10%) Project 3
  • (15%) Project 4
  • (10%) Project 5
  • (10%) Midterm Exam
  • (15%) Final Exam
You will be given a total of three "late days" for the semester. You may use these late days to extend the deadline of any programming or written assignment without penalty. Once all three late days have been used, further extensions will only be granted at the instructor's discretion and may incur a grading penalty.

Note: Please use the Bulletin Board as a primary resource rather than emailing TAs directly. It will yield a more timely respones as all the TAs will be browsing it and your question may even have been answered already!

Project 1 Contest

P1 Contest:

First Prize: Alexandre Kaspar
Interactive mode where clicking the water causes ripples. Extra lights and control options. Can also render in wire frame.
Second Prize: Joshua Wise
Included a model of Mario, made water more realistic, render clouds that fade in and fade out (clouds generated by blending multiple textures).

Third Prize: Huiyang Xing
Added water drops that were timed to drop on to the peak of the waves.
Honorable Mention: Matthew Mirman
Created two lights, which can be controlled using the same controls as the camera. Antialiasing effects and selective normal smoothing for better visual. Pool color changes with time.
Honorable Mention: Wen-Yu Chang
Extra models and background that were interesting.

Project 2 Contest

P2 Winners! (All timings were conducted on the stegosaurus, timings are as follows)

1st Place: Zak Wise
2nd Place: Andrew Tan
3rd Place: Meng Hu

1st subdivision: 3 ms2 ms5 ms
2nd subdivision: 13 ms8 ms20 ms
3rd subdivision: 64 ms33 ms101 ms
4th subdivision: 307 ms137 ms705 ms
5th subdivision: 1210 ms546 ms5522 ms
6th subdivision: 4932 ms2190 ms
7th subdivision: 19907 ms9044 ms

Project 3 Contest

P3 Results! (Click on any of these images to see the full-size rendering).

First Prize: Li Chen
Embossment shader, noise effect, radio effect, mosaic effect
Second prize: Zak Wise
Wrote a drunk shader. When you move, there would be old frames overlapping the new frames.
Third prize: Zhe Chen
Normal shader (displays them as color), TV effect, Shading with wireframe

Project 4 Contest

First Prize: Amos Yuen
Added functionality to increase the number of bounces on the fly. Anti-aliasing using stratified sampling. Also, implemented soft shadows, and glossy reflections. Also added a scene involving mirrors.
Second Prize: Zhe Chen
Axis-aligned bounding box and octree, can raytrace toy.scene in 163 seconds. Also implemented regular and temporal anti-aliasing, interactive function to change recursion depth, enable/disable texture.
Third Prize: Matthew Mirman
Implemented image sample filtering with a gaussian filter. Bounding boxes and two KD trees are used, one for meshes, and one for scenes in general. Images were tiled for better cache performance, and some multithreading using OpenMp (in release mode).


Note: This syllabus may change during the course. Keep checking back.

Name: Introduction
Date: Mon 01/10
Slides: Lecture 1 Slides
Name: OpenGL®
Date: Wed 01/12
Slides: Lecture 2 Slides
Reading: Red Book Ch. 1 and 2
Name: Math for Computer Graphics
Date: Mon 01/17
Notes: Project 1 Assigned
Reading: Red Book Ch. 3, 4 and 5
Notes: Lecture 3 Notes
Notes: Math Notes
Project: Project 1 Description
Project: Project 1 Handout
Name: Transformations
Date: Wed 01/19
Notes: Lecture 4 Notes
Notes: Math Notes
Name: Viewing/Camera
Date: Mon 01/24
Notes: Lecture 5 Notes
Notes: Viewing Notes
Name: Curves and Splines
Date: Wed 01/26
Notes: Lecture 6 Notes
Notes: Splines Handout
Notes: Splines Notes
Name: Meshes and Surfaces
Date: Mon 01/31
Notes: Project 1 Due
Notes: Project 2 Assigned
Notes: Lecture 7 Notes
Notes: Subdivision
Project: Project 2 Description
Project: Project 2 Handout
Shading and Shaders
Name: Shading/Light
Date: Wed 02/02
Notes: Notebook 1 Due
Solutions: Notebook 1 Solutions
Notes: Lecture 8 Notes
Name: Materials - BRDF Measurement
Date: Mon 02/07
Notes: Lecture 9 Slides
Name: Texture mapping + GLSL Shader language
Date: Wed 02/09
Notes: Lecture 10 Slides
Notes: Shaders Slides
Name: Non-photorealistic Rendering & Visualization
Date: Mon 02/14
Notes: Lecture 11 Slides
Supplement: Amy Gooch Paper
Supplement: Grand Challenges
Notes: Project 2 Due
Notes: Project 3 Assigned
Project: Project 3 Description
Project: Project 3 Handout
Name: Illusions
Date: Wed 02/16
Notes: Lecture 12 Slides
Supplement: Lecture 12 Notebook Problems
Color and Light
Name: Guest Lecturer: Srinivas Narasimhan
Date: Mon 02/21
Name: Color and Light
Date: Wed 02/23
Notes: Notebook 2 Due
Solutions: Notebook 2 Solutions
Notes: Lecture 13 Slides (Color)
Notes: Lecture 13 Slides (Light)
Midterm Exam
Name: Midterm Review
Date: Mon 02/28
Notes: Midterm review slides
Name: Midterm Exam
Date: Wed 03/02
Name: Spring Break
Date: Mon 03/07
Name: Spring Break
Date: Mon 03/09
Ray Tracing
Name: Raytracing
Date: Mon 03/14
Notes: Lecture 14 Notes
Notes: Handwritten Notes
Notes: Project 4 Assigned
Project: Project 4 Description
Project: Project 4 Handout
Name: Spatial Data Structures
Date: Wed 03/16
Notes: Lecture 15 Notes
Notes: Project 3 Due
Name: Radiosity
Date: Mon 03/21
Notes: Lecture 16 Notes
Name: Photon Mapping
Date: Wed 03/23
Notes: Lecture 17 Notes
Notes: SIGGRAPH notes
Name: Direct-Global Separation
Date: Mon 03/28
Notes: Lecture 18 Notes
Notes: Separation Paper
Notes: Notebook 3 Due
Name: Animation - Motion capture/Flocking
Date: Wed 03/30
Notes: Lecture 19 Notes
Name: Differential Equations and Particle Systems
Date: Mon 04/04
Notes: Lecture 20 Notes
Notes: Project 4 Due
Notes: Project 5 Assigned
Project: Project 5 Description
Project: Project 5 Handout
Name: Fluids
Date: Wed 04/06
Notes: Fluid for Games
Notes: Jakobsen
Image Processing
Name: Image processing
Date: Mon 04/11
Notes: Lecture 22 Notes
Name: HDR Imaging
Date: Wed 04/13
Notes: Lecture 23 Notes
Name: Photo and Webcam Clipart
Date: Mon 04/18
Notes: Photo Clipart
Miscellaneous and Final Exam
Name: Displays
Date: Wed 04/20
Notes: Displays
Name: Final Review
Date: Mon 04/25
Notes: Before Midterm
Notes: After Midterm
Notes: Project 5 Due
Name: Project Winner Displays
Date: Wed 04/27
Notes: Project Winner Displays
Name: Final exam
Date: May 3, 8:30 - 11:30 am, DH 2315

Last updated: Apr 30, 2011