Stanford CS248, Winter 2019

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 2019 Schedule
Jan 8
Breadth of graphics, simple drawing of lines
Jan 10
Drawing a triangle via point sampling, point-in-triangle testing, aliasing, Fourier interpretation of aliasing, anti-aliasing
Jan 15
Definition of linear transform, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection
Jan 17
perspective projection, texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, prefiltering as an anti-aliasing technique
Jan 22
Z-buffer algorithm, image compositing, end-to-end 3D graphics pipeline as implemented by modern GPUs
Jan 24
Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches
Jan 29
Half-edge mesh structures, mesh operations such as tessellation and simplification
Jan 31
closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
Feb 5
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
Feb 7
Common material models, use of texture for lighting (bump mapping, environment mapping, prebaked lighting), motivating need for shaders on modern GPUs
Feb 12
Midterm Exam
Good luck!
Feb 14
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
Feb 19
Animation examples, splines, keyframing
Feb 21
Optimization basics, inverse kinematics, motion graphs, methods of capturing human motion (motion capture suits, Kinect, computer vision methods)
Feb 26
basic numerical integration, forward Euler, mass-spring systems (e.g., for cloth simulation), particle systems
Feb 28
How the eye works, color spaces, brightness and lightness, motivation for Gamma correction
Mar 5
JPG image compression, image filtering via convolution (sharpening/blurring), non-linear filters
Mar 7
Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, parallel rasterization
Mar 12
Energy efficient rendering on mobile phones, early Z cull, multi-sample anti-alising, tile-based deferred rendering
Mar 14
Have a great Spring Break!
Programming Assignments
Jan 24Assignment 1: Write Your own SVG Renderer
Feb 7Assignment 2: A Mini 3D Triangle Mesh Editor
Feb 26Assignment 3: Lighting and Materials In GLSL
Mar 21Assignment 4: Self-Selected Final Project