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 crosscutting 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, physicallybased animation, and inverse kinematics.
Basic Info
Tues/Thurs 2:303: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, pointintriangle testing, aliasing, Fourier interpretation of aliasing, antialiasing

Jan 19 

Definition of linear transforms, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection

Jan 21 

Perspective projection, texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, prefiltering as an antialiasing technique

Jan 26 

Zbuffer algorithm, image compositing, endtoend 3D graphics pipeline as implemented by modern GPUs

Jan 28 

Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches

Feb 02 

Halfedge mesh structures, mesh operations such as tessellation and simplification

Feb 04 

Closest point, raytriangle intersection, raymesh intersection, the relationship between rasterization and ray tracing

Feb 09 

Acceleration structures such as bounding volume hierarchies, KD trees, uniform grids

Feb 11 

Common material models, use of texture for lighting (bump mapping, environment mapping, prebaked lighting), motivating need for shaders on modern GPUs

Feb 16 

Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, parallel rasterization

Feb 18 

VR Headset hardware, how headmounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering

Feb 23 

How the eye works, color spaces, brightness and lightness, motivation for Gamma correction

Feb 25 

JPG image compression, image filtering via convolution (sharpening/blurring), datadependent filters

Mar 02 

Multiresolution techniques, tone adjustment, trends in deep learningbased image manipulation

Mar 04 

Animation examples, splines, keyframing

Mar 09 

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 

design of modern GPUs, how rendering is parallelized onto GPUs

Mar 18 

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  SelfSelected Final Project 
Exercises
Jan 27  Practice Exercise 1 
Feb 3  Practice Exercise 2 
Feb 10  Practice Exercise 3 
Feb 17  Practice Exercise 4 
Feb 24  Practice Exercise 5 
Mar 3  Practice Exercise 6 
Mar 10  Practice Exercise 7 