Stanford CS248, Winter 2022
INTERACTIVE
COMPUTER GRAPHICS

This course provides a comprehensive introduction to computer graphics, focusing on fundamental concepts and techniques, as well as their cross-cutting relationship to multiple problem domains in interactive graphics (such as rendering, animation, geometry, image processing). Topics include: 2D and 3D drawing, sampling, interpolation, rasterization, image compositing, the GPU graphics pipeline (and parallel rendering), geometric transformations, curves and surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, image processing, compression, time integration, physically-based animation, and inverse kinematics.

Basic Info
Tues/Thurs 1:30-3:00pm
All lectures are virtual
Instructors: Kayvon Fatahalian and Doug James
See the course info page for more info on policies and logistics.
Winter 2022 Schedule
Jan 04
Breadth of graphics applications, simple drawing of lines
Jan 06
Drawing a triangle via point sampling, point-in-triangle testing, aliasing, Fourier interpretation of aliasing, anti-aliasing
Jan 11
Definition of linear transforms, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection
Jan 13
Perspective projection, texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, pre-filtering as an anti-aliasing technique
Jan 18
Z-buffer algorithm, image compositing, end-to-end 3D graphics pipeline as implemented by modern GPUs
Jan 20
Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches
Jan 25
Half-edge mesh structures, mesh operations such as tessellation and simplification
Jan 27
Closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
Feb 01
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
Feb 03
Common material models, use of texture for lighting (bump mapping, environment mapping, prebaked lighting), motivating need for shaders on modern GPUs
Feb 08
Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, parallel rasterization
Feb 10
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
Feb 15
Animation examples, splines, keyframing
Feb 17
Basic numerical integration, forward Euler, mass-spring systems (e.g., for cloth simulation), particle systems
Feb 22
Inverse kinematics, motion graphs, methods of capturing human motion (motion capture suits, Kinect, computer vision methods)
Feb 24
How the eye works, representing color, brightness and chromaticity.
Mar 01
JPG image compression, image filtering via convolution (sharpening/blurring), data-dependent filters
Mar 03
design of modern GPUs, how rendering is parallelized onto GPUs
Mar 08
basics of noise and its uses in computer graphics, ray marching implicit surfaces
Mar 10
course wrap up, discussion of ongoing graphics research at Stanford
Programming Assignments
Jan 20 Assignment 1: Write Your own SVG Renderer
Feb 4 Assignment 2: Cardinal3D - A Mini 3D Triangle Mesh Editor
Feb 18 Assignment 3: Lighting and Materials In GLSL
Mar 11 Self-selected final project
Practice Exercises
Jan 12 Written Exercise 1
Jan 19 Written Exercise 2
Jan 26 Written Exercise 3
Feb 2 Written Exercise 4
Feb 9 Written Exercise 5
Feb 24 Written Exercise 6
Mar 2 Written Exercise 7