This course is an introduction to the foundations of threedimensional computer graphics. Topics covered include 2D and 3D transformations, Rasterization based interactive 3D graphics, shading and reflectance models, texture mapping, geometric modeling using Bézier and BSpline curves, ray tracing, and animation. There will be an emphasis on both the mathematical and geometric aspects of graphics, as well as the ability to write fully functional 3D graphics programs.
Prerequisites for the course:
Linear algebra,
Programming,
Algorithm,
Data Structure
Welcome to our NEW CS180! Traditionally, this course requires considerable implementation and understanding. But this year, we are proud to announce that we have significantly relieved the burden of implementation. This Introduction to Computer Graphics course, to the best of your instructor's knowledge, is the first in the world for which you don't have to write any GPU code, such as OpenGL and its shading language GLSL. In this way, you can focus on the ideas and algorithms rather than painful GPU implementation and debugging. That being said, we do require C++ programming, which is difficult to replace for its high performance and handy libraries.
We are also aware that not all the students are clear what this course is about. Mostly, there's confusion between this Computer Graphics course and other Computer Vision courses. We suggest that you read the tentative syllabus below, to find whether this is the course that you are looking for. Basically, this course does not involve any "guesses", so it is not related to Machine Learning and Data Science. It is about understanding the mechanics that the real world and the computers generate and represent visual information. This course is not about how to use tools to create 3D scenes like an artist either, but it will tell you the science behind these tools to make animations and movies.
Lingqi Yan
Email: lingqi@cs.ucsb.edu
Office hour: Mondays 2PM  3PM, HFH 5102
Göksu Güvendiren
Email: goksu@ucsb.edu
Office hour: Tuesdays 11AM  12PM, CS Trailers
Lei Xu
Email: lei_xu@cs.ucsb.edu
Office hour: Wednesdays 1PM  2PM, CS Trailers
Sign up on Piazza for course announcements, discussion and Q/A!
Lectures:
Mondays and Wednesdays
11:00PM  12:15PM
Girvetz 2128
Discussion Sessions:
Mondays
5:00PM  6:00PM
6:00PM  7:00PM
Phelps 2510
There are no required textbooks for this course. The lecture slides and discussion materials will be your main references. And they will usually be available by the next day of the corresponding lecture/discussion. Other related reading materials will be available to download from this course website before lectures.
Optional references:
Steve Marschner and Peter Shirley, "Fundamentals of Computer Graphics", 3rd or later edition. (Recommended as "Reading" of each lecture)
Tomas AkenineMöller et al., "RealTime Rendering", 3rd or later edition. (Electronic version of the 4th edition is available in UCSB library.)
Your assignments are weekly, mostly programming tasks. As announced earlier, we have optimized your implementation workload, so you are usually expected to write NO MORE THAN 20 LINES OF CODE per week. Besides, we provide code skeleton for each assignment, along with a preconfigured Ubuntu virtual machine for you to get started smoothly.
All assignments are due by 11:59PM Pacific Time on the dates specified. You should plan ahead. Each late day will cause a 10% off the final score of the corresponding assignment. We will use Gauchospace for submissions. Detailed submission guidelines will be in the assignment descriptions.
You will work on the assignments individually. Each assignment takes 8% of your final grade.
There will be two exams. A midterm and a final. Both exams are written, and will be taken in class. The contents of these exams might overlap. Each exam takes 18% of your final grade.
Here's a tentative schedule. Since this is a new course, the schedule is relatively fluid and may change (quite frequently) as the quarter progresses.
Week  Date  Topics 

1  Apr 1  Overview of Computer Graphics [PDF] 
Apr 3  Vectors and Linear Algebra
[PDF]
Reading: Chapter 2 (Miscellaneous Math) and Chapter 5 (Linear Algebra) 

2  Apr 8  Transformation 1 (2D Transformations)
[PDF]
Reading: Chapter 6 (Transformation Matrices), Sections 6.1 and 6.3 [Assignment 1: Transformations] 
Apr 10  Transformation 2 (3D Transformations)
[PDF] [Supplementary] Reading: Chapter 6 (Transformation Matrices), Sections 6.2, 6.4 and 6.5 

3  Apr 15  Transformation 3 (Viewing) [PDF]
Reading: Chapter 7 (Viewing) [Assignment 2: Rotation and Projection] 
Apr 17  Rasterization 1 (Triangles) [PDF]
Reading: Chapter 3 (Raster Images), Sections 3.1 and 3.2; Chapter 7 (Viewing), Section 7.1.1; Chapter 8 (The Graphics Pipeline), Section 8.1 

4  Apr 22  Rasterization 2 (Antialiasing and ZBuffering) [PDF]
Reading: Chapter 8 (The Graphics Pipeline), Sections 8.2 and 8.3; Chapter 9 (Signal Processing) [Assignment 3: Triangles and Zbuffering] 
Apr 24  Shading 1 (Illumination, Shading and Graphics Pipeline) [PDF]
Reading: Chapter 10 (Surface Shading), Sections 10.1 and 10.2 

5  Apr 29  Shading 2 (Texture Mapping) [PDF]
Reading: Chapter 11 (Texture Mapping), Sections 11.1 to 11.4 [Assignment 4: Pipeline and Shading] 
May 1  Geometry 1 (Introduction) [PDF]
Reading: Chapter 12 (Data Structures for Graphics), Section 12.1, Chapter 22 (Implicit Modeling) 

6  May 6  Geometry 2 (Curves and Surfaces) [PDF]
Reading: Chapter 15 (Curves), Sections 15.1, 15.2, 15.3 and 15.6 [Assignment 5: Bezier Curves] 
May 8  Midterm (in class)  
7  May 13  Ray Tracing 1 (Introduction) [PDF]
Reading: Chapter 4 (Ray Tracing) [Assignment 6: RayTriangle Intersection] 
May 15  Ray Tracing 2 (Acceleration) [PDF]
Reading: Chapter 12 (Data Structures for Graphics), Sections 12.1 to 12.3 

8  May 20  Light Transport and Materials [PDF]
Reading: Chapter 18 (Light), Section 18.2, Chapter 24 (Reflection Models), Sections 24.1 to 24.3 [Assignment 7: Bounding Volume Hierarchy] 
May 22  Color [PDF]
Reading: Chapter 19 (Color), Sections 19.1, 19.3 and 19.4, Chapter 20 (Visual Perception), Sections 20.1 and 20.2 

9  May 27  No Class (Memorial Day)
[Assignment 8: MassSpring System] 
May 29  Animation 1 (Introduction and Mass Spring System) [PDF]
Reading: Chapter 16 (Computer Animation), Sections 16.1, 16.2 

10  Jun 3  Animation 2 (Simulation and Kinematics) [PDF]
Reading: Chapter 16 (Computer Animation), Section 16.5 
Jun 5  No Class  
11  Jun 13  Final Exam 
Programming projects are to be implemented individually from scratch. That is, you should not derive solutions from existing sources or previous instances of this course (including previous postings from the online course, at other universities etc.). Discussion of programming projects is allowed and encouraged, but copying of solutions or code from other students, or from students who previously took this course in any university or online setting is not allowed. If you do obtain substantial help from the instructor, teaching assistant/tutor or another student, you must document this in your program. Furthermore, you should in general not copy code from other sources. If in doubt, please ask. Further specifics are given in the assignment specifications.
To repeat, you may not copy solutions or code from other students, or students who previously took this or a similar class at a university or online. You must clearly declare any code and ideas that came directly from others, as opposed to what you created yourself. If you fail to do so, we can only assume you are presenting your own work. Of course, presenting other people's work as your own is academic dishonesty. Students who engage in dishonest activities, with an intent to alter their grade, will receive an F for the course and be reported to the University for further action. Note that you will also be held liable for publicly posting your code on Github or other public websites, if another student subsequently copies from it.
Students with documented disability are welcome to contact the DSP office to arrange the necessary academic accommodations. We will also spare no efforts to help.