Stanford CS248, Winter 2021
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 2:30-3:50pm
Virtual Course Only
Instructors: Kayvon Fatahalian
See the course info page for more info on policies and logistics.
Winter 2021 Schedule
Jan 12
Breadth of graphics applications, simple drawing of lines
Jan 14
Drawing a triangle via point sampling, point-in-triangle testing, aliasing, Fourier interpretation of aliasing, anti-aliasing
Jan 19
Definition of linear transforms, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection
Jan 21
Perspective Projection and Texture Mapping
Perspective projection, texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, prefiltering as an anti-aliasing technique
Jan 26
The Rasterization Pipeline
Z-buffer algorithm, image compositing, end-to-end 3D graphics pipeline as implemented by modern GPUs
Jan 28
Introduction to Geometry
Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches
Feb 02
Mesh Representations and Geometry Processing
Half-edge mesh structures, mesh operations such as tessellation and simplification
Feb 04
Geometric Queries
Closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
Feb 09
Accelerating Geometric Queries
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
Feb 11
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 16
Rendering Techniques for the Real-Time Graphics Pipeline
Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, parallel rasterization
Feb 18
Rendering for Virtual and Augmented Reality
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
Feb 23
Theory of Color
How the eye works, color spaces, brightness and lightness, motivation for Gamma correction
Feb 25
Image Compression and Basic Image Processing
JPG image compression, image filtering via convolution (sharpening/blurring), data-dependent filters
Mar 02
Image Processing for Digital Photography
Multi-resolution techniques, tone adjustment, trends in deep learning-based image manipulation
Mar 04
Introduction to Animation
Animation examples, splines, keyframing
Mar 09
Kinematics and Motion Capture
Optimization basics, inverse kinematics, motion graphs, methods of capturing human motion (motion capture suits, Kinect, computer vision methods)
Mar 11
Exam
In class exam
Mar 16
Graphics Hardware
design of modern GPUs, how rendering is parallelized onto GPUs
Mar 18
Course Summary + Current Graphics Research
course wrap up, discussion of ongoing graphics research at Stanford
Programming Assignments
Jan 28 Assignment 1: Write Your own SVG Renderer
Feb 11 Assignment 2: A Mini 3D Triangle Mesh Editor
Feb 25 Assignment 3: Lighting and Materials In GLSL
Mar 18 Self-Selected Final Project
Exercises