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, texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, prefiltering as an anti-aliasing technique
|
Jan 26 |
|
Z-buffer algorithm, image compositing, end-to-end 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 |
|
Half-edge mesh structures, mesh operations such as tessellation and simplification
|
Feb 04 |
|
Closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
|
Feb 09 |
|
Acceleration structures such as bounding volume hierarchies, K-D 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 head-mounted 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), data-dependent filters
|
Mar 02 |
|
Multi-resolution techniques, tone adjustment, trends in deep learning-based 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 | Self-Selected 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 |