Stanford CS248A, Winter 2025
Computer Graphics:
Rendering, Geometry, and Image Manipulation

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 computer graphics (such as rendering, geometry, image processing, and modern AI-based graphics techniques). 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, ray tracing, global illumination, image processing, and image compression.
Basic Info
Time: Tues/Thurs 1:30-2:50pm
Location: Gates B1
Instructor: Kayvon Fatahalian
See the course info page for more info on policies and logistics.
Winter 2025 Schedule
Jan 07 |
|
A look at the breadth of graphics applications, simple drawing of lines and points
|
Jan 09 |
|
Drawing a triangle via point sampling, point-in-triangle testing, aliasing, Fourier interpretation of aliasing, anti-aliasing
|
Jan 14 |
|
Definition of linear transforms, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection
|
Jan 16 |
|
Texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, pre-filtering 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
|
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 04 |
|
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
|
Feb 06 |
|
Definition of radiometric quantities, the light field, BRDFs, light transport via reflection, integrating energy reflecting from surfaces
|
Feb 11 |
|
More on reflection models (specular reflection, transmittance), numerical estimation of illumination, Monte Carlo integration
|
Feb 13 |
|
Estimating direct lighting due to various types of light sources.
|
Feb 18 |
|
Brute force path tracing, Russian roulette, challenges of variance
|
Feb 20 |
|
Shadow mapping, ambient occlusion, precomputed lighting, real-time raytracing trends and innovations such as hardware acceleration, ReSTIR, and neural denoising.
|
Feb 25 |
|
Scene representations (volumes, points, gaussian splats) for volumetric rendering.
|
Feb 27 |
|
Using gradient-based optimization to recover NeRFs, 3D Gaussian splats. Applications of differentiable rendering.
|
Mar 04 |
|
How the eye works, representing color, brightness, and chromaticity
|
Mar 06 |
|
Non-linear intensity encodings, chroma subsampling, JPG image compression, a bit on video compression
|
Mar 11 |
|
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
|
Mar 13 |
|
Course wrap up, discussion of ongoing graphics research at Stanford, discussion of the future role of generative AI in graphics
|
Programming Assignments
Jan 23 | Assignment 1: Write Your own SVG Renderer |
Feb 6 | Assignment 2: MeshEdit: A Mini 3D Triangle Mesh Editor |
Feb 21 | Assignment 3: Path Tracer |
Mar 18 | Self-Selected Project |
Written Exercises
Jan 21 | Written Exercise 1 |
Jan 31 | Written Exercise 2 |
Feb 13 | Written Exercise 3 |
Feb 27 | Written Exercise 4 |
Mar 14 | Written Exercise 5 |