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 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 1:30-3: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, point-in-triangle testing, aliasing, Fourier interpretation of aliasing, anti-aliasing
|
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, pre-filtering as an anti-aliasing technique
|
Jan 18 |
|
Z-buffer algorithm, image compositing, end-to-end 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 |
|
Half-edge mesh structures, mesh operations such as tessellation and simplification
|
Jan 27 |
|
Closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
|
Feb 01 |
|
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
|
Feb 03 |
|
Common material models, use of texture for lighting (bump mapping, environment mapping, prebaked lighting), motivating need for shaders on modern GPUs
|
Feb 08 |
|
Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, parallel rasterization
|
Feb 10 |
|
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
|
Feb 15 |
|
Animation examples, splines, keyframing
|
Feb 17 |
|
Basic numerical integration, forward Euler, mass-spring systems (e.g., for cloth simulation), particle systems
|
Feb 22 |
|
Inverse kinematics, motion graphs, methods of capturing human motion (motion capture suits, Kinect, computer vision methods)
|
Feb 24 |
|
How the eye works, representing color, brightness and chromaticity.
|
Mar 01 |
|
JPG image compression, image filtering via convolution (sharpening/blurring), data-dependent filters
|
Mar 03 |
|
design of modern GPUs, how rendering is parallelized onto GPUs
|
Mar 08 |
|
basics of noise and its uses in computer graphics, ray marching implicit surfaces
|
Mar 10 |
|
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 |
Mar 11 | Self-selected final project |
Practice Exercises
Jan 12 | Written Exercise 1 |
Jan 19 | Written Exercise 2 |
Jan 26 | Written Exercise 3 |
Feb 2 | Written Exercise 4 |
Feb 9 | Written Exercise 5 |
Feb 24 | Written Exercise 6 |
Mar 2 | Written Exercise 7 |