Thu 2pm–3pm and Fri 10am–11am (in person), and Wed 1pm–2pm (zoom, see link on piazza)
B240A
Windows, Mac, Linux
Tutor
Ziyan "Flynn" Sui
Fri 2pm–3pm Thu 5:30pm–6:30pm
B215 B275
Mac(Arm)
Tutor
Yunchao "Evan" Yao
Mon 5pm–6pm
B240A
Windows, Linux
Overview
Computer graphics is the use of computing to synthesize visual informations. Specifically, it is a process of converting a mathematical representation of the geometric data to a set of pixel colors, so that the outcome best visualizes the virtual world. This course provides an introduction to computer graphics with the following focuses:
3D computer graphics system: Modern graphics pipeline with OpenGL and GLSL.
Geometry of our 3D world: Linear algebra for Euclidean, affine and projective geometries.
Lights and shadows: Color the pixels according to basic optics.
Color and transparency: The mathematical relationship between the physical, perceptional, and displayed color. The algebra of compositing translucent colors.
Vector graphics: Generate smooth curves and surfaces from a few control points.
Photorealism: A glimpse into ray tracing and global illumination.
Physical simulation: A glimpse into physically realistic animated special effects.
Prerequisite
C++ (knowledge of C or Java should be adequate to learn C++)
A computer (laptop or desktop) capable of running Homework 0.
Basic linear algebra: vectors and matrices.
Calculus: This is not a hard requirement. Some notions of differentiation and integration with one or more variables may show up towards the end of the course as we discuss about smooth geometries, physical simulations and global illuminations.
Course Logistics
Getting Started (make sure to follow it in Week 1)
Alternatively, go to Piazza -> getting started as a student -> search schools "University of California, San Diego" (full name, with comma), and then search for "cse 167."
Sign up to Gradescopehttps://www.gradescope.com/courses/444876 (entry code: K3N5V7). This is where you submit all the homework and the weekly one-minute paper. Enroll to CSE 167 on gradescope using the @ucsd.edu email https://www.gradescope.com/ . You probably have already got an email notification as enroll the list of students from canvas. You can also access gradescope from Canvas (on the side menu).
Attend the lecture in-person or remotely (or watch the replay as soon as possible). The lectures are live lectures in the classroom which are also broadcasted via Zoom simultaneously. If you miss the class, please watch the recording as soon as possible. Note that Zoom recording on Canvas tends to automatically delete recordings after 30 days; let me know on Piazza if you have trouble reviewing earlier video as I can revive the videos from trashcan. Take notes, read slides (will be available on Syllabus).
HW0 is due 9/30 (Friday). HW0 is there in order to make sure you can compile the skeleton code.
Class Rules
Do the assignments individually except for the final project. Discussion is encouraged but the final work should be independent work. The final project is done by a group of two collaborating people or by a group of a single person.
Do NOT share your homework solutions online (such as on your github) even after the course. These are viewed as homework solutions and we do not want to spoil the future course takers. The final project is an exception: you can show off what you have accomplished in the final project in your future career.
You can look up coding questions online. The course makes extensive use of OpenGL and C++. While no prior knowledge of OpenGL is required, you'll be expected to look it up largely from online documentations / forums / tutorials for specific questions you encounter. You are also welcomed to post conceptual questions (and answer others' questions) on Piazza.
There is no quiz or exam. The grades are made of the following HWs and project:
Weekly written exercises: 40%
Programming HW0: 5%
Programming HW1: 5%
Programming HW2: 10%
Programming HW3: 10%
Programming HW4: 10%
Final project: 20% (+ up to 5% bonus)
The final letter grade depends on the grade distribution. The passing grade is 70%. Curve the grade: If over 3/4 of the class have completed CAPE course evaluation, then we will apply curve to boost everyone's letter grade.
Late policy
HW0–4 and Exercises late penalty: If the late submission lies in the interval \([(n-1)\cdot 24 {\rm hr} , n\cdot 24{\rm hr})\) after the deadline, the homework grade will be multiplied by \((10-n)/10\). For example 1st day late submission is scaled by 90%; 2nd day late submission is scaled by 80%; and so on. After the 10th day, that assignment grade stays 0%.
No late submission for final project. Submit whatever you have if it is not finished.
Final project can be submitted in a group of two collaborating people, or a singleton group of one person. You can choose to work on one of the topics:
Shadow mapping with texture buffers (with a bonus of taking care of the artifact with perspective shadow map techniques).
5%: Write-up (PDF file) (or a link to accessible google doc, github webpage, etc): Introduce the topic, briefly explain the math/physics underpinning the method, describe the algorithm. Show your understanding of the topic by explaining the subject to the reader.
5%: Implementation (source code): Let us look at the source code.
10%: Demonstration: A compilation of your favorite results that best show the significant points of the topic. This demonstration can be of a form of a video clip. If the work is very static, then you can just put a result section in your write-up as the demonstration. We encourage a video since a video is useful for showing your user interface design for your program, and definitely useful for showing an animated result.
5%: Bonus for excellent final projects.
If for some reason you couldn't make the code work in time, you can still get partial credits if you have a good write-up.
Resources
There is no specific required textbook for this course. But if you are confused with the lectures or you want to see various expositions, here are a few books that you may want to look up.
Tomas Akenine-Möller, Eric Haines, Naty Hoffman, Real-Time Rendering. Good textbook of what we cover in the course (You can access free online version on UC Library).
John Hughes et al, Computer Graphics: Principles and Practice. Another classic textbook on computer graphics. It is comprehensive and can gain a broad view in graphics.
Steven Gortler, Foundations of 3D Computer Graphics. Careful mathematical exposition within a CG API. If there is confusion in math (what is basis, vector, components) it is good to see how this book handles them.
Steve Marschner and Peter Shirley, Fundamentals of Computer Graphics. It is a fairly simple text and is easy to follow.
OpenGL books: the Red Book (Shreiner, Woo et al.), the Orange Book (Randi Rost.), etc. These are the canonical programming guide.
Online resources https://learnopengl.com/ You can find many topics of our course; following the website step by step should make everything work!