Course: CMSC 23700 Introduction to Computer Graphics Instructor: John Reppy Ryerson 256 TAs: Lamont Samuels Tri Huynh Lecture: TR 1:30-2:50 Ry 251 Labs: W 2:30-3:50 Lab 1 (CSIL 1) W 4:00-5:20 Lab 2 (CSIL 1) Office hours: M 2:00-3:00 Reppy (Ryerson 256) W 11:00-1:00 Huynh (Ryerson 255) F 1:00-2:00 Reppy (Ryerson 256)
This course aims to provide an introduction to the basic concepts and techniques used in 3D computer graphics. The focus is on real-time rendering techniques, such as those found in computer games. These include: coordinate systems and transformations; geometric modeling; the programmable graphics pipeline; level-of detail optimizations; and rendering techniques.
The course covers both the theory and practice of computer graphics. The lectures, homework assignments and exams focus on algorithms, data structures, and the mathematical foundations of computer graphics, while while the lab sessions and programming projects deal with translating theory into practice.
There are two required texts:
Title: Mathematics for 3D Game Programming and Computer Graphics (3rd Edition) Author: Eric Lengyel Publisher: Cengage Learning PTR, 2011 Book web site: http://www.mathfor3dgameprogramming.com Title: OpenGL SuperBible: Comprehensive Tutorial and Reference (7th Edition) Authorw: Graham Sellers, Richard Wright, and Nicholas Haemel Publisher: Addison Wesley, 2015 Book web site: http://www.openglsuperbible.com
Note that the 6th Edition of the OpenGL SuperBible is also sufficient for the course, but if you are going to buy a new copy, you should get the 7th Edition.
The programming assignments will be written using the C++ programming language. If you are not familier with the language, you may want to pick up a copy of one of the following books:
Title: A Tour of C++ Authors: Stroustrup Publisher: Addison Wesley Title: C++ Primer (Fifth Edition) Authors: Lippman, Lajoie, and Moo Publisher: Addison Wesley
The Stroustrup text is a relatively short overview of the main features of C++, whereas the Lippman book is a detailed, and long (938 pages) description of the full language. Both books describe the latest version of C++ (the C++11 standard).
Grading for the course will be based on:
Percentage Component 20% Homework assignments (5) 30% Exams (2) 50% Projects (6)
The assignments will be posted on the class website. Homework assignments should be handed in at the beginning of class the day they are due. Programming projects will be automatically collected from your course phoenixforge repository.
In general, late homework and programming assignments will not be accepted, but each student may have one 24-hour extension on one assignment or individual project. You must request the extension before the assignment is due. There are no extensions on group projects.
Project grades will consist of a correctness portion (worth 70%) and a style portion (worth 30%). Your code must compile. Failure to compile will result in a 0 for the correctness portion of the grade.
Since late assignments are not accepted, the only way that you can get partial credit for a project that you fail to turn in on time is by committing your code to svn early and often. Be sure, however, to make sure that your code compiles (use comments or #ifdef to ellide broken code), since failure to compile results in a zero on the correctness portion of the grade.
The following is a tentative plan for what topics will be covered and when. Readings are denoted as "M3D" for Mathematics for 3D Game Programming and Computer Graphics and "SB" for the OpenGL SuperBible; page ranges are denoted in brackets.
Week | Activity | Topics | Readings |
---|---|---|---|
1 | Lect. 1 | Evolution of graphics hardware; the graphics pipeline; programmable shaders | M3D:Ch1; SB:Ch1&3 |
Lab. 1 | Introduction to OpenGL | SB:Ch2 | |
Lect. 2 | Linear algebra crash course: vectors and matrices | M3D:Ch2&3 | |
2 | Lect. 3 | More linear algebra; transforms; homogeneous coordinates; quaternions | M3D:Ch3&4; SB:Ch4 |
Lab. 2 | Shader Programs & 3D Transformations; GLFW Key & Mouse Events | SB:Ch6 | |
Lect. 4 | Geometry; parameterized vs. implicit representations; intersection testing. | MD3:Ch5.1-2,Ch6.1-2 | |
3 | Lect. 5 | Projections: perspective vs. orthographic; view frustum | MD3:Ch5.3-5; SB:Ch4 |
Lab. 3 | Texturing objects; per-pixel lighting computations | SB:Ch5[137-176] | |
Lect. 6 | Basic illumination, lighting, and shading | M3D:Ch7.1-4,7.6-7; SB:Ch13 | |
4 | Lect. 7 | Advanced shading: texture maps, normal maps, and procedural texturing | M3D:Ch7.5,7.8; SB:Ch5[152-199] |
Lab. 4 | Shadows | M3D:Ch10; SB:Ch13[599-605] | |
Lect. 8 | Offscreen rendering; framebuffers & depthbuffers | SB:Ch9[390-412] | |
5 | Lect. 9 | More shadows; blending | SB:Ch9[382-390] |
Lab. 5 | Open Lab | ||
Lect. 10 | Deferred rendering; the G buffer | SB:Ch9[390-397],Ch13[613-624] | |
6 | Lect. 11 | Accelerating rendering ‐ bounding volumes and view-frustum culling | M3D:Ch12 |
Lab. 6 | Deferred rendering & Culling | ||
Lect. 12 | Accelerating rendering ‐ spatial data structures; collision detection | M3D:Ch8 | |
7 | Lect. 13 | Meshes; LOD; imposters | M3D:Ch9.4-6 |
Lab. 7 | Open Lab | ||
Lect. 14 | Parametric surfaces; tessellation shading | M3D:Ch11; SB:Ch8[305-333] | |
8 | Lect. 15 | Terrain rendering | |
Lab. 8 | Terrain rendering | ||
Lect. 16 | Animation ‐ interpolation of key frames | ||
9 | Lect. 17 | Animation ‐ physics-based animation | MD3:Ch15.2 |
No lab; Thanksgiving | |||
10 | Lect. 18 | GPGPU | |
Lab. 9 | Open Lab |
Note that not all topics that we cover in class are covered by the texts.
There will be five written homework assignments over the course of the term. Assignments will typically be posted here on Wednesdays and be due at the beginning of class on Thursday the following week. Late homework will not be accepted for credit.
Date Assignment Due date October 1, 2015 Homework 1 [Updated 2015-10-05] October 8 (at the beginning of class) October 14, 2015 Homework 2 October 22 (at the beginning of class) October 29, 2015 Homework 3 November 10 (at the beginning of class) November 12, 2015 Homework 4 November 19 (at the beginning of class) November 24, 2015 Homework 5 December 3 (due during special office hours)
The course will require six programming projects. The projects will be coded in a subset of C++ using the OpenGL 4.1 core profile and the GLFW library (version 3.0.4). This platform is supported by the CSIL Macs, which are running Mac OS X 10.10 (Yosemite).
We believe that programming style is important, thus 30% of your project grade will be based on style and documentation of your code (the other 70% will be based on correctness). It is also important that your code compile successfully. Code that does not compile will not be graded on correctness; i.e. it will get a zero on the correctness part of the grade.
Project's 4 and 5 together constitute the final project. For students enrolled in CMSC23700, you will be free to work in pairs; students in CMSC33700 will do individual projects. Project 5 will be due at 12 noon on Tuesday, December 8. Furtheremore, there will be final project demos from 1:30-3pm on Tuesday (location TBA).
Date Project Due date October 2, 2015 Project 1: Basic OpenGL Rendering [Updated 2015-10-05] October 12, 2015 (10pm) October 12, 2015 Project 2: Shading and Lighting October 19, 2015 (10pm) October 20, 2015 Project 3: Advanced Lighting Techniques [Description updated 2015-10-22] November 2, 2015 (10pm) November 4, 2015 Project 4: Deferred Rendering November 16, 2015 (10pm) November 15, 2015 Project 5: Terrain Rendering (part 1) November 24, 2015 (10pm) November 21, 2015 Project 6: Terrain Rendering (part 2) December 8, 2015 (12 noon)
We will use phoenixforge to manage project code and submissions. Your class repository is accessible at
where CNETID is your personal CNet ID (i.e., you uchicago.edu email address). You can also login to phoenixforge.cs.uchicago.edu using your CNet ID and password.
Here you will find class information and supplemental reading for topics not covered by the texts. As necessary, we will post revisions here.
Date Document September 29 Course information November 12 Notes on polygon meshes
September 30 Lab 1: OpenGL Basics October 7 Lab 2: Shader Programs & 3D Transformations; GLFW Key & Mouse Events October 14 Lab 3: Texturing Objects & Per-Pixel Lighting Computations October 21 Lab 4: Shadow Mapping November 6 Lab 6: Deferred Rendering
The following is a list of supplemental documents for topics not covered by the texts. As necessary, we will post revisions here.
Date Document October 29 Compositing Digital Images by Thomas Porter and Tom Duff
The University of Chicago is a scholarly academic community. You need to both understand and internalize the ethics of our community. A good place to start is with the Cadet's Honor Code of the US Military Academy: "A Cadet will not lie, cheat, or steal, or tolerate those who do." It is important to understand that the notion of property that matters most to academics is ideas, and that to pass someone else's ideas off as your own is to lie, cheat, and steal.
The University has a formal policy on Academic Honesty, which is somewhat more verbose than West Point's. Even so, you should read and understand it.
We believe that student interactions are an important and useful means to mastery of the material. We recommend that you discuss the material in this class with other students, and that includes the homework assignments. So what is the boundary between acceptable collaboration and academic misconduct? First, while it is acceptable to discuss homework, it is not acceptable to turn in someone else's work as your own. When the time comes to write down your answer, you should write it down yourself from your own memory. Moreover, you should cite any material discussions, or written sources, e.g.,
Note: I discussed this exercise with Jane Smith.
The University's policy, for its relative length, says less than it should regarding the culpability of those who know of misconduct by others, but do not report it. An all too common case has been where one student has decided to "help" another student by giving them a copy of their assignment, only to have that other student copy it and turn it in. In such cases, we view both students as culpable and pursue disciplinary sanctions against both.
For the student collaborations, it can be a slippery slope that leads from sanctioned collaboration to outright misconduct. But for all the slipperyness, there is a clear line: present only your ideas as yours and attribute all others.
If you have any questions about what is or is not proper academic conduct, please ask your instructors.
Last revised: November 17, 2015