Stanford CS248A, Winter 2023
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 interactive graphics (such as rendering, 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, and image compression.

Basic Info
Time: Tues/Thurs 1:30-2:50am
Location: Gates B1
Instructor: Kayvon Fatahalian
See the course info page for more info on policies and logistics.
Winter 2023 Schedule
Jan 10
A look at the breadth of graphics applications, simple drawing of lines
Jan 12
Drawing a triangle via point sampling, point-in-triangle testing, aliasing, Fourier interpretation of aliasing, anti-aliasing
Jan 17
Definition of linear transforms, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection
Jan 19
Texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, pre-filtering as an anti-aliasing technique
Jan 24
Z-buffer algorithm, image compositing, end-to-end 3D graphics pipeline as implemented by modern GPUs
Jan 26
Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches
Jan 31
Half-edge mesh structures, mesh operations such as tessellation and simplification
Feb 02
Closest point, ray-triangle intersection, ray-mesh intersection, the relationship between rasterization and ray tracing
Feb 07
Acceleration structures such as bounding volume hierarchies, K-D trees, uniform grids
Feb 09
Definition of radiometric quantities, the light field, BRDFs, light transport via reflection, integrating energy reflecting from surfaces
Feb 14
Numerical estimation of illumination, Monte Carlo integration and its application to ray tracing
Feb 16
Estimating direct lighting due to various types of light sources and BRDFs
Feb 21
Brute force path tracing, Russian roulette, challenges of variance
Feb 23
Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, real-time raytracing trends and innovations
Feb 28
How the eye works, representing color, brightness, and chromaticity
Mar 02
non-linear encodings, chroma subsampling, JPG image compression
Mar 07
image filtering via convolution (sharpening/blurring), data-dependent filters, Gaussian and Laplacian pyramids
Mar 09
VR Headset hardware, how head-mounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering
Mar 14
Design of modern GPUs, how rendering is parallelized onto GPUs
Mar 16
Course wrap up, discussion of ongoing graphics research at Stanford
Programming Assignments
Jan 26 Assignment 1: Write Your own SVG Renderer
Feb 10 Assignment 2: MeshEdit: A Mini 3D Triangle Mesh Editor
Feb 27 Assignment 3: Path Tracer or Lighting and Materials In GLSL (student choice)
Mar 21 Self-selected Final Project
Practice Exercises
One written practice exercise per week, graded on a credit/no credit basis.
Jan 18 Practice Exercise 1
Jan 25 Practice Exercise 2
Feb 1 Practice Exercise 3
Feb 8 Practice Exercise 4
Feb 15 Practice Exercise 5
Feb 22 Practice Exercise 6
Mar 1 Practice Exercise 7
  Practice Exercise 8