Stanford CS248, Winter 2020
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 noon-1:30pm
Room: Gates B1
Instructor: Kayvon Fatahalian
See the course info page for more info on course policies and logistics.
Winter 2020 Schedule
Jan 7 |
Breadth of graphics applications, simple drawing of lines
|
Jan 9 |
Drawing a triangle via point sampling, point-in-triangle testing, aliasing, Fourier interpretation of aliasing, anti-aliasing
- Programming Assignment 1 Released
|
Jan 14 |
Definition of linear transforms, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection
|
Jan 16 |
Perspective projection, texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, prefiltering as an anti-aliasing technique
|
Jan 21 |
Z-buffer algorithm, image compositing, end-to-end 3D graphics pipeline as implemented by modern GPUs
|
Jan 23 |
Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches
- Programming Assignment 1 Due
- Programming Assignment 2 Released
|
Jan 28 |
Half-edge mesh structures, mesh operations such as tessellation and simplification
|
Jan 30 |
Closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
|
Feb 4 |
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
|
Feb 6 |
Common material models, use of texture for lighting (bump mapping, environment mapping, prebaked lighting), motivating need for shaders on modern GPUs
- Programming Assignment 2 Due
- Programming Assignment 3 Released
|
Feb 11 |
Animation examples, splines, keyframing
|
Feb 13 |
Optimization basics, inverse kinematics, motion graphs, methods of capturing human motion (motion capture suits, Kinect, computer vision methods)
|
Feb 18 |
basic numerical integration, forward Euler, mass-spring systems (e.g., for cloth simulation), particle systems
|
Feb 20 |
How the eye works, color spaces, brightness and lightness, motivation for Gamma correction
- Programming Assignment 3 Due
|
Feb 25 |
JPG image compression, image filtering via convolution (sharpening/blurring), data-dependent filters
|
Feb 27 |
Multi-resolution techniques, tone adjustment, trends in deep learning-based image manipulation
- Project Proposal Due
|
Mar 3 |
Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, parallel rasterization
- Evening Exam
|
Mar 5 |
Energy efficient rendering on mobile phones, overview of recent research topics in computer graphics
|
Mar 10 |
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
|
Mar 12 |
Programming Assignments
Jan 23 | Assignment 1: Write Your own SVG Renderer |
Feb 6 | Assignment 2: A Mini 3D Triangle Mesh Editor |
Feb 20 | Assignment 3: Lighting and Materials In GLSL |
Mar 18 | Assignment 4: Self-Selected Final Project |
Exercises
Jan 17 | Exercise 1 |
Jan 24 | Exercise 2 |
Feb 3 | Exercise 3 |
Feb 10 | Exercise 4 |
Feb 17 | Exercise 5 |
Feb 24 | Exercise 6 |