CSE 168 is intended as a follow-on to CSE 167, and as such CSE 167 or the equivalent is a pre-requisite (you should have taken 167 or equivalent at another university, found the material interesting and done well in the course). The course has no overlap with CSE 190 (Jurgen Schulze's class on virtual reality) that is taught simultaneously this spring. We have adjusted the timings so you can take both courses this quarter. (Other classes that don't overlap include CSE 165 and CSE 169 in winter; you are encouraged to take this course if you enjoyed those classes last quarter). CSE 168 is intended to teach advanced topics in computer graphics rendering, which have recently become standard in industry. As such, it is a must-have course for students seeking further opportunities in computer graphics in graduate school or industry. The course is intended to be of interest to MS and PhD students in graphics, vision or robotics, in addition to advanced undergraduates. If you like this course, I would highly recommend also registering for the advanced graduate courses like CSE 272, 274 and 291, which will be taught next year.

Course Format and Requirements

This is a regular lecture course, consisting of lectures on the relevant topics by the instructor. As opposed to CSE 167, this course is intended to have a more intimate feel, with a smaller class size, more in-class discussions and more independence and creative leeway in projects. We expect you to create websites to turn in your work in some cases, especially if extra credit is involved (a new innovation is the use of UCSD Online to submit your images in most cases). We also do not provide skeleton code apart from a basic framework for those seeking to do real-time raytracing in OptiX. More information is available in the schedule and assignments page.

Grading will be based entirely on 5 large programming projects. The last of these is a final project that provides wide flexibility in design to students to produce the best images. The projects will teach you how to build a modern path tracer for rendering, to produce realistic computer graphics images. We will also cover more advanced topics. For those of you adventurous enough to try a real-time raytracing system based on OptiX, you will also be able to speed up and run some of the homeworks in real-time.

Students are required to do all the assignments (this may be in groups of 2; the requirements remain unchanged if working alone, although we may at our discretion consider to a marginal extent in assigning the final grade.) Programs must be implemented entirely by students themselves; You may not copy source code from previous instances of this or a similar class, other students, or other online etc. resources. Please bear this in mind, we have unfortunately have had to deal with cheating in previous classes where students copied from online resources. You may also not post your source code publicly, including to github or other public repositories. (There are a number of online resources and softwares on path tracing and global illumination rendering; you may look at them for inspiration, but definitely not copy code.)

Please note that there is minimal hand-holding on the projects. They are large assignments for which you are given about 2 weeks, and they cannot be done at the last moment. You will need to start early and work steadily. No late days will be given except in exceptional circumstances. Since you are supposed to be working steadily, turn in what you have by the deadline, even if it is not perfect. If you do have extraordinary circumstances, please contact the instructor well *before* the assignment is due.
To avoid ambiguity, we will enforce a very strict late policy as follows. There will be a 10% deduction (of your total score) for the first hour late (this will mostly just be upload and internet issues), a 25% deduction for the first 12 hours late (which will cover any confusion about timezone issues and last minute submissions), 50% for the first 24 hours late, and no credit if the submission is more than 24 hours late. The reason is to encourage you to work steadily on the homework and submit what you have by the deadline. The policy is intentionally a good deal stricter than what is typically used in 167.


Topics include key aspects of computer graphics rendering, in particular the tools to build a full path tracer. We also discuss some other topics in rendering. Specifically topics include:


There are no books specifically required for this class. Readings including book chapters and papers are provided where needed for each lecture. Optionally, a comprehensive computer graphics rendering book such as Principles of Digital Image Synthesis by Andrew Glassner or PBRT (third edition; this book is now free in an online edition along with the code, and its impact in industry has been recognized by a technical academy award, the only book ever to be so recognized).

For resources on basic math, see linear algebra Free Text. For resources on Fourier analysis, the DSP Guide may be useful (for example, chapters 8-13 on discrete fourier transforms). There are many other online links if you search the web.

Final Projects

See some of the best projects submitted for Spring 2021. These include photon mapping (Yutong Zhang and separately Jesus Gutierrez), a a recreation of Elsa's palace (Baichuan Wu and Vincent Li), and subsurface scattering (Jeremy Lin). You can click to access project websites, and save or bring up the images for higher resolution.

To close, I include a brief summary of the best final projects submitted for Spring 2020 (will be replaced when ready by projects in this class). Click on the images for descriptions of the projects. From left to right, from students Winston Durand, Karl Wang, Xuezheng Wang and Yiming Zhao. Many of these projects involve volumetric scattering, photon mapping, depth of field and refraction. You can save or bring up the images for higher resolutions.