Stanford CS248A, Winter 2024
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 crosscutting 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:302:50pm
Location: NVIDIA Auditorium
Instructor: Kayvon Fatahalian
See the course info page for more info on policies and logistics.
Winter 2024 Schedule
Jan 09 

A look at the breadth of graphics applications, simple drawing of lines and points

Jan 11 

Drawing a triangle via point sampling, pointintriangle testing, aliasing, Fourier interpretation of aliasing, antialiasing

Jan 16 

Definition of linear transforms, basic geometric transforms, homogeneous coordinates, transform hierarchies, perspective projection

Jan 18 

Texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, prefiltering as an antialiasing technique

Jan 23 

Zbuffer algorithm, image compositing, endtoend 3D graphics pipeline as implemented by modern GPUs

Jan 25 

Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches

Jan 30 

Halfedge mesh structures, mesh operations such as tessellation and simplification

Feb 01 

Closest point, raytriangle intersection, raymesh intersection, the relationship between rasterization and ray tracing

Feb 06 

Acceleration structures such as bounding volume hierarchies, KD trees, uniform grids

Feb 08 

Definition of radiometric quantities, the light field, BRDFs, light transport via reflection, integrating energy reflecting from surfaces

Feb 13 

More on reflection models (specular reflection, transmittance), numerical estimation of illumination, Monte Carlo integration

Feb 15 

Estimating direct lighting due to various types of light sources and BRDFs

Feb 20 

Brute force path tracing, Russian roulette, challenges of variance

Feb 22 

Shadow mapping, reflections, ambient occlusion, precomputed lighting, deferred shading, realtime raytracing trends and innovations

Feb 27 

How the eye works, representing color, brightness, and chromaticity

Feb 29 

nonlinear encodings, chroma subsampling, JPG image compression

Mar 05 

VR Headset hardware, how headmounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering

Mar 07 

Design of modern GPUs, how rendering is parallelized onto GPUs

Mar 12 

Scene representations (sparse volumes, gaussian splats) for volumetric rendering, applications to NeRFs and modern scene capture

Mar 14 

Course wrap up, discussion of ongoing graphics research at Stanford

Programming Assignments
Jan 26  Assignment 1: Write Your own SVG Renderer 
Feb 9  Assignment 2: MeshEdit: A Mini 3D Triangle Mesh Editor 
Feb 27  Assignment 3: Path Tracer 
Mar 19  Selfselected Final Project 
Practice Exercises
Jan 23  Practice Exercise 1 
Jan 30  Practice Exercise 2 
Feb 6  Practice Exercise 3 
Feb 13  Practice Exercise 4 
Feb 20  Practice Exercise 5 
Mar 5  Practice Exercise 6 