This is an advanced computer graphics course for undergraduates as well as Masters and PhD students who have strong interests in the field.
We will learn about the foundation and algorithms for **physically-based rendering**: computer graphics techniques that simulate how light interacts with 3D scenes to produce photorealistic images.
This course is a natural continuation of CSE 167. We will assume familiarity of basic computer graphics concepts, so make sure you are comfortable with the materials in CSE 167.
Throughout the course, we will build a physically-based renderer together that will be capable of rendering images like the one above. It'll be quite a bit of programming and math, but it will be fun! Nothing matches the feeling when you "paint" a canvas using math and code.

The course will be counted for full credit for MS/PhD students.

You can take a look at last year's course webpage to have a better sense of what the course is about. This course is also offered on MOOC and UCSD Online by Ravi Ramamoorthi. You are free to look at Ravi's lectures (and that is probably sufficient to pass this course), but my lecturing style would be slightly different. While I will cover most contents covered by Ravi, the order and details might be different.

If you are interested in even more advanced materials, you might want to take a look at my CSE 272 course: Advance Image Synthesis. CSE 274: Sampling and Reconstruction of Visual Appearance from Ravi Ramamoorthi is also highly-related.

If you are looking into other aspects of computer graphics, CSE 191 B: Virtual Reality Technology and CSE 165:3D User Interaction from Jurgen Schulze, CSE 169: Computer Animation from Steve Rotenberg, CSE 273: Computational Photography from Ben Ocha, and CSE 274: Discrete Differential Geometry and CSE 291: Physics Simulation from Albert Chern are all super cool courses.
UCSD has one of the largest faculty on graphics!

We will do most of the online discussions on Piazza. You are welcome to peek at the UCSD online discussions of this course but we will not be monitoring questions there.

There will be 4 programming homeworks (each 20%) and 1 final project (20%).

The homeworks involve quite a bit of programming and can be tough for inexperienced. Start early and ask questions!

(this means that after 1 day your score becomes 0! start early! no negotiation unless you get a letter from the dean.)

We will use the time on Canvas to determine how many seconds have passed. No late submission for the final project. The grade submission deadline is too close.

All the homeworks will be based on the torrey codebase.

The Ray Tracing in One Weekend series from Peter Shirley is a great read. Our homeworks will follow closely their structure.

smallpt is a great reference of a simplistic path tracer.

Physically-based Rendering: from Theory to Implementation contains a comprehensive reference to many topics we talk about. It might be a dense read though.

Eric Veach's thesis contains a rigorous mathematical foundation of rendering theory. Good for theory minded students. Probably a bit too deep for this course.

Ke-Sen's webpage is where you find all the (recent) cool graphics papers!

Why rendering? Course overview. Introduction to (Whitted-style) ray tracing.

Indirect lighting vs direct lighting. Reflection models. Lambertian. Phong. Blinn-Phong.

Cameras. Depth of field. Motion blur.

Spatial subdivision, grids, nested grids, kd-trees, and BSP trees.

Bounding volume hierarchies. Top-down vs bottom-up constructions. Surface area heuristics.

Nyquist Shannon sampling theorem. Pixel filters. Mitchell-Netravali filter.

UV mapping. Procedural textures. Perlin noise.

Ray differentials and mipmapping.

Shading normals. Bump mapping. Normal mapping. Displacement mapping.

Random number generation. Bias vs variance. Dimensionality. Stratified sampling.

Rejection sampling. Inverse transform sampling.

Sampling Blinn-Phong. Spherical light source sampling. Discrete distribution sampling.

Cook-Torrance-Sparrow BRDF. Fresnel equation.

Path tracing. Russian roulette.

Capturing and rendering environment maps.

Catmull-Clark and Loop subdivision. Hardware tesselation.

Rendering closed 2D Bezier curves and strokes.

Lafortune's 5D tree. Photon map importance sampling. Importance caching.

Percentage-closer filtering. Moment shadow map.

Depth peeling. Weighted OIT. Linked list sorting.

Precomputed radiance transfer. Ambient occlusion. Light maps.