Real-Time High Quality Rendering

CSE 291 Topics in Computer Graphics, Winter 2015, Prof. Ravi Ramamoorthi Time and Place: Tu/Th 11-12:20 in WLH 2204


One of the perennial goals of computer graphics is creating high quality images which are indistinguishable from photographs: a goal referred to as photorealism. Another important goal is interactivity for visualization, simulation, gaming and other real-time applications. However, these two goals have historically been at odds with each other. Photorealism employing methods like ray tracing and radiosity has resulted in beautiful pictures, but at the cost of slow algorithms taking hours to days. Interactivity has been enabled through advances in graphics architectures, from the earliest SGI machines to today's powerful desktop and even mobile GPUs. When I first taught this course 10 years ago (as COMS 6160 at Columbia), the traditional focus of real-time rendering was on more polygons rather than high-quality images. At that time, things were on the cusp of a revolution as a result of improved and programmable graphics hardware, new efficient image synthesis algorithms and real-time raytracing methods, opening up the potential of real-time high quality rendering.

The intervening decade has seen a large part of this vision realized. Ray Tracing hardware such as NVIDIA's Optix is now common, and widely used in games, programmable GPU chips supporting full OpenGL and CUDA are now available on mobile phones that didn't even exist a decade ago, and papers on real-time high quality image synthesis algorithms regularly appear at SIGGRAPH and are incorporated even by movie studios and product visualization companies for rapid preview and lighting design.

At the same time, we are on the cusp of a second revolution, where we now have the potential to produce truly photorealistic images, without significant approximations, at interactive rates. This includes full global illumination solutions (such as those taught in CSE 168, many of which were developed by UCSD faculty and students). See my Waskul TV interview for a verbal discussion of some of these ideas.

In this course, we will review the history and some of the recent ideas that seek to bridge the gap between realism and interactivity. Topics include graphics hardware with modern programmable GPUs, and real-time raytracing, the use of complex lighting and shading with shadows and environment maps, image-based rendering, methods based on signal-processing and precomputed images, newer work on adaptive sampling and reconstruction for interactive global illumination, and miscellaneous topics.

Below are some example images produced in real-time using the systems we will be discussing.


CSE 291 is an advanced course concentrating on current research topics in computer graphics. The content may change with every offering and the course can be repeated for credit. It is targeted towards undergraduate and MS students with a knowledge of and interest in computer graphics (at the level of CSE 167 or equivalent; CSE 168 is not required but would be helpful), as well as PhD students working in graphics, vision, and robotics.

Relationship to Other Courses

The course is an integral part of the vision and graphics track for undergraduate, MS and PhD students. It builds on the undergraduate graphics classes CSE 167 [taught by Prof. Schulze in the fall] and CSE 168/169. In particular, CSE 168 discusses offline rendering methods (advanced graduate version of which is CSE 272, both taught by Prof. Jensen in the spring), while this course explores how they can be moved into the real-time domain. If you like this course, I would highly recommend also registering for my course CSE 190, as well as CSE 168/272 next quarter. However, CSE 168 is not required as a pre-requisite (some exposure to graphics, in the form of CSE 167 or the equivalent elsewhere is required).

Course Format and Requirements

The course will consist of lectures on the relevant topics by the instructor, student presentations of papers covering current research in the area, and student projects. A syllabus/schedule is noted below. The grading will be 30% for paper presentations, 60% for the project, and 10% for class participation. Students are expected to come to class regularly and participate in discussions, since this is an advanced graduate course.

In general, roughly (depends on the number of students in the course), 2 paper presentations will be required. A project is not required for students taking the course S/U or P/NP, or for those taking it for 1 unit. An S/U registration or for 1 unit is a good option for PhD students and others to read papers on this exciting topic and learn about the area without committing too much effort into a course project, and we encourage you to sign up. Auditors, who simply want to sit in on the course are also welcome; however, we prefer if you sign up for the course pass/fail or for one unit instead [this just involves doing one or two paper presentations].

Students taking the course for a letter grade are required to do a project [this may be in groups of 2], give a presentation in class regarding their results, and also submit a final written report. Wide flexibility is available with respect to project topics, provided they relate loosely to the subject matter of the course. We expect that most projects will implement one or more of the algorithms or papers discussed in the course, showing an impressive real-time demo of high quality rendering. We welcome suggestions from the students on alternative project ideas. The best projects will go beyond the published work in some way, such as trying out an alternative or better approach or trying to develop some variant or more general version of the technique. However, this is not essential; in general, students who fulfil all course requirements including a well-executed project will easily receive an A in the course.

As a potentially easier alternative to the project, we will also accept a well-written summary or tutorial, covering 3 or 4 papers. The best summaries will point out links between the papers not noticed by the original authors and suggest improvements or directions for future research. However, this option is recommended only as a last resort and will generally receive a slightly lower score; we prefer that you do a good project (which may involve understanding a few papers in any case).


Topics to be covered include



The (tentative) course schedule is as follows. In general, you will likely benefit from doing the reading (i.e. the papers assigned for a particular date) before class; it will at least make for more lively discussion.

Jan 6: Jan 8: Jan 13: Jan 15: Jan 20: Jan 22: Jan 27: ` Jan 29: Feb 3: Feb 5: Feb 10: Feb 12: Feb 17: Feb 19: Feb 24: Feb 26: Mar 3: Mar 5: Mar 10: Mar 12:
Ravi Ramamoorthi
Last modified: Thu Feb 19 20:53:56 PST 2015