Information
Prerequisites
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 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 edX edge 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. 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.
Topics
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:
- Review of Ray Tracing
- Global Illumination and Rendering Equation
- Monte Carlo Integration for Direct Lighting
- Monte Carlo Path Tracing for Global Illumination
- (Multiple) Importance Sampling
- Recent Advances in High Quality Rendering
- Real-Time and Precomputation-Based Rendering
- Image-Based Rendering and Light Fields
Resources
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
To close, I include a brief summary of the best final projects submitted for Spring 2020 (there were many other excellent ones, don't feel upset if you're not listed on this page, which focuses primarily on rendering competition style projects). 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.