UCSD CSE 167 Computer Graphics

2D Graphics
Transparency
3D Graphics
OpenGL
Lighting
3D modeling in Blender


Images made by students from previous year.

Courtesy of (in order): Bernico Chandra, Jinshen Qiu, Daniel Jordan, Arnav Kamdar, Vivian Liu, Chuong Nguyen, Nick Petrone, Chau Pham, Pramodya Rajapakse, Annapurna Saladi, Alexander Tahan, Harish Vasanth, Kenneth Vuong, John Zhou, Mitchell Bizzigott, Anya Chernova, Arnav Kamdar, Andrew Pu, Luffy Saito, Annapurna Saladi, Alexander Tahan, Andrew Zheng, Annapurna Saladi, Nick Petrone, Jasmine Vodhanel, Diego Pereyra, Ethan Schwartzman, Thinh Vo, Ella Tung, Arnav Kamdar

See previous year's course page for more cool images.

Cool final projects from previous year (click for shadertoy animation link).

Courtesy of (in order): Minsang Kim, Kenneth Nguyen, Annapurna Saladi, Benjamin Johnson, Aryan Desai, Jeremy Abondano, Vivian Wang, Matteo Persiani, Joshua Kave, Bernico Chandra, Shirley Bian, Raymond Wang, Allen Keng, Joshua Chen, Nick Petrone, Abdullah Ahmed, Michael Wang, Arnav Kamdar, Ivan Arredondo Mancilla, Cathrine Du, Po-Yu Lai, Andrew Pu, Felipe Hu, Xander Hinrichsen, Mitchell Bizzigotti, Jason Boenjamin, Jiawei Huang, Murthy Sumukh, Peike Xu, Daniil Katulevskiy

Course Description

Computer graphics is a field about processing ``visual data'', including images, videos, 2D and 3D shapes, light and reflection, motion, physical properties, and many more. Throughout the course, we will learn about:
You can take a look at previous CSE 167 web pages (either my version, Albert Chern's version or Ravi Ramamoorthi's version) to have a better sense of what the course is about. This course is also offered on MOOC and UCSD Online by Ravi Ramamoorthi. You are free to look at Ravi's lectures, but my lecturing style would be slightly different. While I will cover most contents covered by Albert and Ravi, the order and details might be different.

This course is only the tip of an iceburg of a fascinating field. If you are interested in computer graphics, you should look the more advanced materials in CSE 168 for rendering (either my version or Ravi's version), CSE 169 for animation, CSE 191 B: for virtual reality and CSE 165 for user interaction.

For graduate students, CSE 272, CSE 273, CSE 274: Sampling and Reconstruction of Visual Appearance, CSE 274: Discrete Differential Geometry, CSE 275: Deep Learning for 3D Data, and CSE 291: Physics Simulation are all relevant and super cool courses. UCSD has one of the largest faculty on graphics!

Prerequisites

(Modern) C++. Matrices and vectors.

Logistics

Instructor: Tzu-Mao Li
TA: Trevor Hedstrom (tjhedstr-at-ucsd.edu), Mustafa Yaldiz (myaldiz-at-ucsd.edu)
Tutors: Annapurna Saladi (asaladi-at-ucsd.edu), Ritoban Roy-Chowdhury (rroychowdhury-at-ucsd.edu)
Lectures: Monday/Wednesday/Friday 15:00-15:50 Pacific time. Location: CENTR 119.
Dicussion: Friday 18:00-18:50 Pacific time. Location: CENTR 115.
Instructor office hour: Wednesday 4pm-5pm. Location: CSE 4116.
TAs/Tutors office hour: Trevor Fri 2-3pm @ CSE-B270A, Mustafa Mon 1-2pm @ CSE-4127, Annapurna Thu 2-3pm @ CSE-B275, Ritoban Tue 10-11am @ CSE-B270
We will do most of the online discussions on Piazza.
Posting rules in Piazza: When asking debugging questions about the homework, please: Posts fail to adhere to the rules will be ignored. For example, simply posting a screenshot asking what is wrong in the screenshot does not adhere to the rules above.
Course recording: We will record the class if the equipment is available. However, the class will be very interactive and you might be missing a lot of context if you are not in the classroom yourself. Please try to join us in person and let's have fun together!

Grading, Homeworks and Projects

There will be 4 programming homeworks (each 17.5%) and a final project (30%).
The homeworks involve quite a bit of programming and can be tough for inexperienced. Start early and ask questions!

Late penalty: score * clamp(1 - (seconds passed after midnight of the deadline day) / 86400, 0, 1)
(this means that after 1 day your score becomes 0! start early!)
We will use the time on Canvas to determine how many seconds have passed.

Homeworks 1-4 will be based on the balboa codebase.

Homework 1 (17.5%): 2D Graphics (due 10/13)
Homework 2 (17.5%): 3D Software Rendering (due 10/29)
Homework 3 (17.5%): 3D OpenGL Rendering (due 11/14)
Homework 4 (17.5%): 3D Modeling (due 11/26)
Final Project (30%): Shadertoy Animation (due 12/12)

Collaboration policy: You are expected to do the homeworks and the project alone (feel free to discuss between peers!).
LLM policy: We do not recommend heavily using large language models for the programming assignments and projects. Coming up with the solutions yourself is an important part of the learning process for building the correct mental models. If you use LLMs for your assignments, you should report your usage.

Readings

All of these are optional.

CMU 15-462/662: a very nice (but intense) computer graphics course from Keenan Crane.
Immersive Linear Algebra: linear algebra tutorials with interactive figures.
Essence of Linear Algebra: video tutorials of linear algebra from 3Blue1Brown
Fundamentals of Computer Graphics from Steve Marschner and Peter Shirley is the standard textbook.
Computer Graphics: Principles and Practice from John Hughes, Andy van Dam, Morgan McGuire, David Sklar, James Foley, Steven Feiner, and Kurt Akeley is another standard textbook.
Physically-based Rendering: from Theory to Implementation contains a comprehensive reference to many topics we talk about. It might be a dense read though.
Ke-Sen's webpage is where you find all the (recent) cool graphics papers!

Schedule (tentative)

9/26/2025 (Fri): Introduction. (HW 1 out) [slides]

Why computer graphics? Course overview.

9/29/2025 (Mon): Vector graphics. [slides]

Rasterizing 2D graphics. Antialiasing. Transparency. Bezier curves.

10/1/2025 (Wed): Vector graphics. [slides]

10/3/2025 (Fri): Linear transformation. [slides]

Basic linear algebra. 2D linear transformation. Affine transformation.

10/6/2025 (Mon): Cameras. [slides]

Pinhole cameras. Field of view vs focal length. Perspective and orthographic projection.

10/8/2025 (Wed): Rasterization. [slides]

Triangle meshes. Depth interpolation. Z buffer. Perspective-corrected interpolation. Frustrum culling. Occlusion culling.

10/10/2025 (Fri): Ray tracing vs rasterization. [slides]

Z culling vs acceleration structures.

10/13/2025 (Mon): 3D transformation. (HW1 due, HW2 out) [slides] [recording]

Homogeneous coordinates. Scene graphs.
INSTRUCTOR OUT OF TOWN, WILL USE RECORDING

10/15/2025 (Wed): 3D rotation. [slides] [recording]

Euler angles. Axis-angle representation. Quaternion/Rotors.
INSTRUCTOR OUT OF TOWN, WILL USE RECORDING

10/17/2025 (Fri): Programmable graphics pipelines. [slides] [recording]

GPU architecture. Fixed-function pipeline. Vertex shaders. Fragment shaders.
INSTRUCTOR OUT OF TOWN, WILL USE RECORDING

10/20/2025 (Mon): Textures. [slides]

Image textures. Procedural textures. UV mapping. Mipmapping.

10/22/2025 (Wed): Lighting. [slides]

Ambient/diffuse/specular lighting. Shading normals. Gouraud/Phong/Deferred.

10/24/2025 (Fri): Materials. [slides]

Measured BRDFs. Blinn-Phong. Microfacet BRDFs.

10/27/2025 (Mon): Colors. [slides]

Color spaces. Gamma.

10/29/2025 (Wed): Global illumination. (HW2 due, HW3 out) [slides]

Path tracing. Radiosity.

10/31/2025 (Fri): Shadow mapping and shadow volume. [slides]

11/3/2025 (Mon): Antialiasing. [slides]

MSAA. FXAA. TAA.

11/5/2025 (Wed): Non-photorealistic rendering. [slides]

Toon shading. Contours. Line drawing.

11/7/2025 (Fri): Procedural modeling. [slides]

Fractal surfaces. L-systems. Grammars. SDFs.

11/10/2025 (Mon): Geometry processing. [slides]

Surface reconstruction. Mesh smoothing. Mesh simplification. Remeshing/Parameterization.

11/12/2025 (Wed): Curves and smooth surfaces. [slides]

Bezier cuves. B-splines. NURBS. Catmull-Clark and Loop subdivision.

11/14/2025 (Fri): Animation. (HW3 due, HW4 out) [slides]

Newtonian mechanics. ODEs. Numerical integration. Forward and inverse kinematics.

11/17/2025 (Mon): Particle systems and mass-spring systems. [slides]

Boids. Cloth simulation. Constrained dynamics.

11/19/2025 (Wed): Rigging, skinning, and blendshapes. [slides]

11/21/2025 (Fri): Graphics systems and domain-specific languages. [slides]

11/24/2025 (Mon): Neural networks. [slides]

11/26/2025 (Wed): Point-based graphics and Gaussian splatting. (HW4 due, final out) [slides]

11/28/2025 (Fri): Thanksgiving Holiday.

12/1/2025 (Mon): Transparency and volumes. [slides]

Alpha compositing. Volume rendering. Ray marching.

12/3/2025 (Wed): TBD

12/5/2025 (Fri): Sneak peak of other graphics classes, industry, and research. [slides]

CSE 168/169 and more.

12/12/2025 (Fri): Final due.