Stanford CS248, Spring 2018
INTERACTIVE COMPUTER GRAPHICS
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, 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, physicallybased animation, and inverse kinematics.
Basic Info
Tues/Thurs 3:004:20pm
Bldg 260, Room 113
Instructor: Kayvon Fatahalian
See the course info page for more info on course policies, logistics, and how to prepare for the course.
Spring 2018 Schedule (subject to change)
Apr 3 
Breadth of graphics, simple drawing of lines, linear algebra and vector math review

Apr 5 
Drawing a triangle via point sampling, pointintriangle testing, aliasing, Fourier interpretation of aliasing, antialiasing
Assignment 1 released

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

Apr 12 
perspective projection, texture coordinate space, bilinear/trilinear interpolation, how aliasing arises during texture sampling, prefiltering as an antialiasing technique

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

Apr 19 
Properties of surfaces (manifold, normal, curvature), implicit vs. explicit representations, basic representations such as triangle meshes, bezier curves and patches
Assignment 1 due, Assignment 2 Released

Apr 24 
Halfedge mesh structures, mesh operations such as tessellation and simplification

Apr 26 
closest point, raytriangle intersection, raymesh intersection

May 1 
Accelerating Geometric Queries
Acceleration structures such as bounding volume hierarchies, KD trees, uniform grids, application to raycasting, the relationship between rasterization and ray casting

May 3 
Materials, Lighting, and Shading
Common material models, use of texture for lighting (bump mapping, environment mapping, prebaked lighting), motivating need for shaders on modern GPUs
Assignment 2 due, Assignment 3 Released

May 8 
Midterm Exam
Good luck!

May 10 
Rendering Challenges of Virtual Reality
VR Headset hardware, how headmounted displays cause challenges for renderers, resolution and latency requirements, judder, foveated rendering

May 15 
Introduction to Animation
Animation examples, splines, keyframing

May 17 
Kinematics and Motion Capture
Optimization basics, inverse kinematics, motion graphs, methods of capturing human motion (motion capture suits, Kinect, computer vision methods)
Assignment 3 Due, Project released

May 22 
Dynamics and Time Integration
basic numerical integration, forward Euler, massspring systems (e.g., for cloth simulation), particle systems

May 24 
Theory of Color
How the eye works, color spaces, brightness and lightness, motivation for Gamma correction

May 29 
Image Processing and Image Compression
JPG image compression, image filtering via convolution (sharpening/blurring), nonlinear filters, multiresolution representations (Gaussian and Laplacian pyramids)

May 31 
How Modern GPUs Work (How Rasterization is Parallelized on GPUs)
Parallel rendering, basics of parallel computer architecture, shading languages, modern motivations for deferred shading

Jun 5 
Architecture of a Modern Game Rendering Engine
Case study of how engines like Unity or Unreal render images efficiently

Assignments and Projects
due Apr 19  Assignment 1: Write Your own SVG Renderer 
due May 3  Assignment 2: A Mini 3D Triangle Mesh Editor 
due May 17  Assignment 3: Lighting and Materials 
TBD  SelfSelected Term Project 
weekly  Guidelines and Tips for Making Good Lecture Comments 