Stanford CS248, Winter 2022
INTERACTIVE
COMPUTER GRAPHICS
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 1:303: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, pointintriangle testing, aliasing, Fourier interpretation of aliasing, antialiasing

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, prefiltering as an antialiasing technique

Jan 18 

Zbuffer algorithm, image compositing, endtoend 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 

Mesh Representations and Geometry Processing
Halfedge mesh structures, mesh operations such as tessellation and simplification

Jan 27 

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

Feb 01 

Accelerating Geometric Queries
Acceleration structures such as bounding volume hierarchies, KD 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 RealTime Graphics Pipeline
Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, parallel rasterization

Feb 10 

VR Headset hardware, how headmounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
VR Headset hardware, how headmounted 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, massspring 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), datadependent 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 4  Assignment 2: Cardinal3D  A Mini 3D Triangle Mesh Editor 
Feb 18  Assignment 3: Lighting and Materials In GLSL 
TBD  Selfselected final project 
Practice Exercises
Jan 12  Written Exercise 1 
Jan 19  Written Exercise 2 
Jan 26  Written Exercise 3 