Real-Time High Quality Rendering

CSE 274 Topics in Computer Graphics, Fall 2015, Prof. Ravi Ramamoorthi Time and Place: Tu/Th 9:30-10:50 in Pepper Canyon Hall 120


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, laptop and even mobile GPUs. When I first taught this course 11 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 274 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. (The current offering is the same as the winter CSE 291 class, but it is likely that future CSE 274 offerings will be on different topics.) The course is targeted towards undergraduate and MS students with a knowledge of and interest in computer graphics (at the level of CSE 167 or equivalent at another university; CSE 168 is not required but would be helpful), as well as PhD students working in graphics, vision, and robotics. We are willing to consider students who do not completely fulfil the pre-requisites in exceptional cases, if they have a strong interest in the material. Undergraduates who have taken CSE 167 (or other advanced courses) are welcome.

Teaching Assistant

We have a teaching assistant for the course, Jiyang Yu. His office hours will be in 4150 (CS bldg) Mondays and Wednesdays from 11-noon, or you can e-mail him to schedule an appointment.

Relationship to Other Courses

The course is an integral part of the vision and graphics track for undergraduate, MS and PhD students (The instructor can help in getting any relevant permissions for it to count for credit towards the track as needed). It builds on the undergraduate graphics classes CSE 167 [taught by Prof. Schulze in the fall/spring] and CSE 163/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 163 in the winter (previously taught as CSE 190 this spring), as well as CSE 168/272 in the spring. 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; in this case we request you register for the minimum of 2 units (rather than the normal 4 units for those taking the class for grades; please speak with the instructor regarding any exceptions). An S/U registration 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.

Sep 24: Sep 29: Oct 1: Oct 6: Oct 8: Oct 13: ` Oct 15: Oct 20: Oct 22: Oct 27: Oct 29: Nov 3: Nov 5: Nov 10: Nov 12: Nov 17: Nov 19: Nov 24: Dec 1: Dec 3:
Ravi Ramamoorthi
Last modified: Tue Oct 20 11:08:23 PDT 2015