Stanford CS248, Winter 2022

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
The Rasterization Pipeline
Z-buffer algorithm, image compositing, end-to-end 3D graphics pipeline as implemented by modern GPUs
Jan 20
Introduction to Geometry
Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches
Jan 25
Mesh Representations and Geometry Processing
Half-edge mesh structures, mesh operations such as tessellation and simplification
Jan 27
Geometric Queries
Closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
Feb 01
Accelerating Geometric Queries
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
Feb 03
Materials, Lighting, and Shading
Common material models, use of texture for lighting (bump mapping, environment mapping, prebaked lighting), motivating need for shaders on modern GPUs
Feb 08
Rendering Techniques for the Real-Time Graphics Pipeline
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
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
Feb 15
Introduction to Animation
Animation examples, splines, keyframing
Feb 17
Kinematics and Motion Capture
Inverse kinematics, motion graphs, methods of capturing human motion (motion capture suits, Kinect, computer vision methods)
Feb 22
Dynamics and Time Integration
Basic numerical integration, forward Euler, mass-spring systems (e.g., for cloth simulation), particle systems
Feb 24
Theory of Color
How the eye works, color spaces, brightness and lightness, motivation for Gamma correction
Mar 01
Image Compression and Basic Image Processing
JPG image compression, image filtering via convolution (sharpening/blurring), data-dependent filters
Mar 03
Representing and Processing Volumes
basics of volumetric representations
Mar 08
Graphics Hardware (Basics of GPUs and Parallel Rendering)
design of modern GPUs, how rendering is parallelized onto GPUs
Mar 10
Course Summary + Current Graphics Research
course wrap up, discussion of ongoing graphics research at Stanford
Programming Assignments
Jan 20 Assignment 1: Write Your own SVG Renderer
Feb 3 Assignment 2: A Mini 3D Triangle Mesh Editor
Feb 17 Assignment 3: Lighting and Materials In GLSL
TBD Self-selected final project
Practice Exercises
Jan 12 Written Exercise 1
Jan 19 Written Exercise 2