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:
- Modeling: How to describe and edit 2D and 3D shapes.
- Rendering: How to turn 2D and 3D shapes into images algorithmically, and how to make it fast using domain-specific hardware.
- Animation: How to create motion.
You can take a look at previous CSE 167 web pages (either
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.
Prerequisites
(Modern) C++. Matrices and vectors.
Logistics
Lectures: Monday/Wednesday/Friday 11:00am-11:50pm Pacific time. Location: PCYNH 109.
Dicussion: Friday noon-12:50pm Pacific time. Location: PCYNH 109.
Instructor office hour: Friday 3pm-4pm. Location: CSE 4116.
TA office hour: B275 Mon 3-4pm (Trevor), B275 Fri 4-5pm (Randal), B270A Thu 1-2pm (Baichuan).
We will do most of the online discussions on
Piazza.
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 5 programming homeworks (each 20%).
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! no negotiation unless you get a letter from the dean.)
We will use the time on Canvas to determine how many seconds have passed.
Homeworks 1-4 will be based on the
balboa codebase.
Collaboration policy: You are expected to do the homeworks alone (feel free to discuss between peers!).
ChatGPT/Co-pilot/machine generated text/code policy: We do not encourage or discourage you for using ChatGPT or Co-pilot or other similar software. Pick the way you feel is the best for learning computer graphics.
Readings
All of these are optional.
CMU 15-462/662: a very nice (but intense) computer graphics course from Keenan Crane.
Schedule (tentative)
9/29/2023 (Fri): Introduction. (HW 1 out) [slides]
Why computer graphics? Course overview.
10/2/2023 (Mon): Vector graphics. [slides]
Rasterizing 2D graphics. Antialiasing. Transparency. Bezier curves.
10/4/2023 (Wed): Linear transformation. [slides]
Basic linear algebra. 2D linear transformation. Affine transformation.
10/6/2023 (Fri): Cameras. [slides]
Pinhole cameras. Field of view vs focal length. Perspective and orthographic projection.
10/9/2023 (Mon): Rasterization. [slides]
Triangle meshes. Depth interpolation. Z buffer. Perspective-corrected interpolation. Frustrum culling. Occlusion culling.
10/11/2023 (Wed): Ray tracing vs rasterization. [slides]
Z culling vs acceleration structures.
10/13/2023 (Fri): 3D transformation. [slides]
Homogeneous coordinates. Scene graphs.
10/16/2023 (Mon): 3D rotation. (HW1 due, HW2 out) [slides]
Euler angles. Axis-angle representation. Quaternion/Rotors.
10/18/2023 (Wed): Programmable graphics pipelines. [slides]
GPU architecture. Fixed-function pipeline. Vertex shaders. Fragment shaders.
10/20/2023 (Fri): Textures. [slides]
Image textures. Procedural textures. UV mapping. Mipmapping.
10/23/2023 (Mon): Lighting. [slides]
Ambient/diffuse/specular lighting. Shading normals. Gouraud/Phong/Deferred.
10/25/2023 (Wed): Materials. [slides]
Measured BRDFs. Blinn-Phong. Microfacet BRDFs.
10/27/2023 (Fri): Colors. [slides]
Color spaces. Gamma.
10/30/2023 (Mon): Global illumination. [slides]
Path tracing. Radiosity.
11/1/2023 (Wed): Shadow mapping and shadow volume. (HW2 due, HW3 out) [slides]
11/3/2023 (Fri): Antialiasing. [slides]
MSAA. FXAA. TAA.
11/6/2023 (Mon): Non-photorealistic rendering. [slides]
Toon shading. Contours. Line drawing.
11/8/2023 (Wed): Procedural modeling. [slides]
Fractal surfaces. L-systems. Grammars. SDFs.
11/10/2023 (Fri): Veterans Day Holiday
11/13/2023 (Mon): Geometry processing. [slides]
Surface reconstruction. Mesh smoothing. Mesh simplification. Remeshing/Parameterization.
11/15/2023 (Wed): Curves and smooth surfaces. [slides]
Bezier cuves. B-splines. NURBS. Catmull-Clark and Loop subdivision.
11/17/2023 (Fri): Animation. (HW3 due, HW4 out) [slides]
Newtonian mechanics. ODEs. Numerical integration. Forward and inverse kinematics.
11/20/2023 (Mon): Particle systems and mass-spring systems. [slides]
Boids. Cloth simulation. Constrained dynamics.
11/22/2023 (Wed): Rigging, skinning, and blendshapes. [slides]
11/24/2023 (Fri): Thanksgivings holiday.
11/27/2023 (Mon): Rigid-body simulation. [instructor was sick -- class canceled]
11/29/2023 (Wed): Graphics systems and domain-specific languages. [slides]
12/1/2023 (Fri): Point-based graphics. (HW4 due, HW5 out) [instructor was sick -- class canceled]
12/4/2023 (Mon): Transparency and volumes. [slides]
Alpha compositing. Volume rendering. Ray marching.
12/6/2023 (Wed): Neural networks. [slides]
Representation. Inverse problems.
12/8/2023 (Fri): Sneak peak of other graphics classes. [slides]
CSE 168/169 and more.
12/12/2023 (Tue): HW5 due.