CSE168 is Computer Graphics II: Rendering, a course on physically-based rendering. It is an advanced computer graphics course for students who have completed CSE 167 (Introduction to Computer Graphics) or equivalent. This is a course on modern rendering or simulating the propagation of paths of light to create realistic images in 3D scenes. In the past decade, the industry has undergone the path tracing revolution wherein the methods taught in this class are widely used in practice. As such, this course is up to date on material that is actively used in industry, and teaches essential topics in modern computer graphics. We will make use of state of the art techniques and algorithms including suggestions for real-time ray and path tracing in OptiX, and build a modern path tracer with multiple importance sampling. You may be interested in a more detailed description of the class from our local CSE 168 website, which also includes links to additional lecture slides on more advanced topics.
Note that it is our intent for this course to be applicable to both local UCSD students and a general public MOOC audience. The MOOC audience can directly use the course as is. For UCSD students enrolled in credit-bearing CSE 168 only , it should be viewed as a supplement to the on-campus course and lectures with the caveat that some of the material in the on-campus course is additional or different, and grading will be based on the on-campus course. For MOOC students, note that the pass requirement is currently set to 60% to obtain a passing grade and a certificate. In practice, that means you will need to do the first two assignments (raytracer, similar to homework 3 in CSE 167x and direct lighting, and you will need to make at least some progress on the indirect illumination and global illumination path tracer. We do hope you go all the way, including the final importance sampling assignment). Finally, for UCSD students, note that the local course also requires a final project (homework 5, not required for MOOC students).
There are no books specifically required for this course, and all material can be obtained from lectures. For those interested in readings, please refer to those on the local CSE 168 website schedule. For those interested in a textbook, I would recommend 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). Other resources are available from the local CSE 168 information page.
Finally, the online MOOC course is self-paced. We will likely have an end date, but extend it as needed. For the local CSE 168 course, you need to follow campus deadlines for each assignment per the class policy.
Briefly, the material on this site is organized in 4 units, each with its own homework assignment. We continue the numbering from the online CSE 167x, and start with unit 3, corresponding to the raytracer (homework 3 in CSE 167).
- Raytracing (Homework 1)
- Direct Lighting (Homework 2)
- Path Tracing (Homework 3)
- Importance Sampling (Homework 4).
You can use any computer system you like, and the homeworks can be implemented in software from scratch. However, for those who are able, we do recommend you consider using NVIDIA's OptiX for real-time raytracing capabilities. We do provide a brief skeleton for this purpose. Of course, using OptiX requires an NVIDIA GPU, and is unlikely to be available on Mac computers. However, you are not required to use OptiX. For those who are interested and unable to use OptiX, you may consider using Embree, which is Intel's real-time CPU raytracer. However, we do not provide any skeleton code for Embree to the MOOC class (local UCSD students will get a skeleton that implements homework 1 after that homework is due). Once again, it is also perfectly acceptable to develop completely in software by yourself; the graders only check the output, not the computing framework. Development would normally be in C++, but we have no specific requirement on the language used.
All submitted work must be your own, and you must write all programs yourself (no copying code from classmates, previous instances of the class or online resources). You must only submit images for grading that were actually produced by your program. Note that you should definitely not submit any malicious code or make any attempt to take down the grader; all submissions will be logged and strict action will be taken for violation of these rules. Please do not post your source code or programs on external websites or social media. In particular, do not post source code to a public repository on github or a similar site; use private/not searchable repositories, or simply do not use github.
For MOOC students, please the discussion forum. It is expected that local UCSD students will use Piazza and direct e-mail where appropriate, but we will still try to monitor the discussion forum. We will post some useful clarifications to the course material pinned to the edX discussion forum at the start of the course for your ease of use.
Ravi Ramamoorthi is the Ronald L. Graham Professor of Computer Science at UC San Diego, joining the faculty on Jul 1, 2014, where he is the founding director of the UC San Diego Center for Visual Computing. He was earlier on the faculty of UC Berkeley (2009-2014) and Columbia University (2002-2008). He has taught computer graphics more than 10 times at Stanford, Columbia and the University of California, and has been honored with a number of awards for his research, including the ACM SIGGRAPH Significant New Researcher Award and by the White House with the PECASE (Presidential Early Career Award for Scientists and Engineers); he was elected an IEEE and ACM fellow in 2017. His contributions to CSE 167 and earlier CS 184.1x have been recognized by edX, with him being named one of 11 finalists for the inaugural edX Prize for Exceptional Contributions in Online Teaching and Learning in 2016, and again in 2017 as the only two-time and only computer science finalist. He has developed CSE 168 as a comprehensive course on physically-based rendering, making available this important material as a follow on to CSE 167 in this online forum for the first time.
Course Technical Staff
We acknowledge the extraordinary efforts of UCSD CSE MS alumnus Andrew Bauer in developing the assignments and graders, and TAing the first local CSE 168 course, and the tutor, undergraduate alumnus Guangyan Cai for developing the OptiX frameworks. They should really get most of the credit for the course. Tiancheng Sun will be maintaining the graders.