CS5630 Physically Based Realistic Rendering

Spring 2026
Location: Gates 114
Time: T/R 10:10am-11:25am
Professor: Steve Marschner
TAs: Mariia Soroka and Gemmechu Hassena
Office hours: Mondays 4-5 pm in Rhodes 576 (Masha), Wednesdays 2:30-3:30 pm in Gates 313 (Steve), Fridays 3-4 pm in Rhodes 576 (Gemmechu).

This class covers the mathematics and physics of light transport as it pertains to the visual appearance of the world, and the algorithms and practice of using these models to generate beautiful realistic images. This includes radiometry, colorimetry, and radiative transfer; formulations of light transport in terms of recursive integrals or integral equations in path space; Monte Carlo methods for computing approximate solutions; and the craft of building fast and usable rendering software. These methods are the ones currently universally used in the film industry for animation and visual effects, and they are becoming available in the lastest hardware for games and VR as well.

In the first half of the semester, you will be given a bare-bones renderer that initially cannot render anything meaningful. Through a series of assignments, you will turn this starter code into a full path tracer capable of rendering scenes with glossy, rough, transparent, and reflective materials under a variety of illumination conditions:

Ajax Rough Ajax Smooth Cornell Box GI

To help you understand the underlying mathematical background, there will be several theory-oriented notebooks that should be completed alongside the implementation work.

The second part of the class is all about the final project. You will extend the basic renderer to support more advanced rendering techniques of your choosing. The class will culminate in a rendering competition where you will present renderings produced with your code to a panel of judges.

For inspiration and to see what a final implementation of your renderer can achieve, we recommend looking at the results of rendering competitions held at other universities,: CS-440@EPFL, CS87/287@Dartmouth, or CG@ETH.

Disclaimer: This is a brand new class and the syllabus and assignments may change as we refine the course over time.

Schedule

Here is a tentative schedule and the relevant reading material. We will update the schedule if necessary. If the assignment due date differs between this page and CMSX, the CMSX date overrides this one. All the assignments are due at 11:59pm.
Date Topic References Assignments
20Jan Intro    
22Jan Ray tracing acceleration PBRT 7.3 Assignment 0 is due on Jan 23
27Jan Probability and Monte Carlo integrationnotes | notebook | notebook PBRT Ch.2  
29Jan Probability and Monte Carlo integration    
3Feb Sampling techniquesnotebook    
5Feb Radiometrynotes PBRT 4.1 Assignment 1 is due on Feb 6
10Feb Light reflection PBRT 4.3  
12Feb Illumination integrals PBRT 4.2, 4.4 Notebook 2 is due on Feb 13
17Feb —February break—    
19Feb Assignment 2 help and discussion    
24Feb Multiple importance sampling   Assignment 2 is due
26Feb Microfacet reflection model    
3Mar Transparency and translucency   Notebook 3 is due
5Mar The rendering equation    
10Mar Path tracing   Assignment 3 is due
12Mar Next event estimation and MIS in path tracing    
17Mar Textures, antialiasing, and image-based lighting   Notebook 4 is due
19Mar Denoising    
24Mar Real time ray tracing   Assignment 4 is due
26Mar Many lights and resampled importance sampling   Project proposal is due on March 27
31Mar —Spring break—    
2Apr —Spring break—    
7Apr Radiative Transport    
9Apr Participating media    
14Apr Translucent materials    
16Apr Scattering from fibers    
21Apr Survey of reflectance models    
23Apr Layered reflectance models    
28Apr Measuring surface appearance    
30Apr TBD    
5May TBD    
TBD Rendering competition    

Coding assignments and notebooks

The coding assignments are built in Wenzel Jakob's educational renderer, Nori, though our assignments will be somewhat different in the specifics. The details are on the CS5630 Nori page. Assignments 2, 3 and 4 are acompanied by notebooks that should be completed before the correspoinding coding assignment. (There are no Notebooks 0 and 1) The notebooks are there to help you understand the mathematical background behind the algorithms you will be implementing.

The planned assigments and notebooks are as follows:

Projects

During the second half of the semester, you will extend your renderer to support new rendering effects of your choosing, culminating in a rendering competition to select the technically and aesthetically best images. To help you decide on the details of your project, we will provide a list of features that students commonly implement in this class. Each feature will be assigned a value based on its complexity, and a strong final project should reach an appropriate level of overall complexity. You are more than welcome to implement features that are not on the list; the value of such custom features will be determined on a case-by-case basis after discussion with the course staff.

To help you plan your project, you will be required to submit a project proposal by March 27, and we will provide feedback on it. Projects will be graded based on written reports and in-person demos. The grading of the project will not take the aesthetics of the images into account, only the correctness of the implementation and technical complexity.

Course policies

Questions, help, discussion: The instructor and TAs are available to answer questions, advise on projects, or just to discuss interesting topics related to the class at office hours and by appointment as needed. For electronic communication we are using Ed Discussion (access via Canvas).

Late submissions: We allow for the total of 4 late days. You can use these late days for any assignments except for the final project submission. Each late day allows you to submit an assignment up to 24 hours after the deadline without penalty. Once you have used all 4 late days, grade for any further late submission will be reduced by 50%. Assignments in this class are very dependent on each other, so this policy is here to encourage you to submit on time.

Collaboration: You are welcome (encouraged, even) to discuss projects and assignments among yourselves and to help one another track down problems. But when it comes to the design and implementation, your code needs to be your own work. In particular, it's certainly never OK to copy parts of one person's writeup, code, or results into another's, even if the general solution was worked out together.

AI use and open source renderers: Various LLM chatbots and co-pilots can be useful tools for coding and learning, can help you figure out how to get around a new codebase faster or debug tricky issues. Thus, we do not prohibit the use of AI in this class. We, however, require you to disclose any use of AI tools in your assignment and project reports and mention which tools you used for what purpose.

There are multiple open source renderers that you may find online. You are welcome to study them to understand how certain algorithms are implemented, but you may not copy code from them into your assignments or projects. If you do refer to any open source renderer in your work, please cite it properly in your report.

Ultimately, it is very easy to decide when to use and when not to use AI or open source code. Here is a two step strategy:
1. Remember that you are taking the class to learn and improve your understanding of the subject.
2. Aks the question: Does using this tool or code help me learn and understand the subject better? If the answer is yes, go ahead and use it. If the answer is no, don't use it.

Regardless of which external resources or tools you used you are responsible for understanding everything you submit. Assignments and projects will be graded based on the understanding of the content.

Academic integrity: We assume the work you hand in is your own, and the results you hand in are generated by your program. You're welcome to read whatever you want to learn what you need to do the work, but we do expect you to build your own implementations of the methods we are studying. If you're ever in doubt, just include a citation in your code or report indicating where some idea came from, whether it be a classmate, a web site, another piece of software, or anything—this always maintains your honesty, whether the source was used in a good way or not. The principle is that an assignment is an academic document, like a journal article. When you turn it in, you are claiming that everything in it is your original idea (or is original to you and your partner, if you're handing in as a pair) unless you cite a source for it.

School can be stressful, and your coursework and other factors can put you under a lot of pressure, but don't let that lure you into dishonesty. If you feel you can't complete the work on your own, come talk to the professor, or your academic advisor, and we can help you figure out what to do.

For more information see Cornell's Code of Academic Integrity.

Books

Fundamentals of Computer Graphics cover

Physically Based Rendering: From Theory to Implementation (4th ed.)

Matt Pharr, Wenzel Jakob, and Greg Humphreys

This book is an encyclopedic source for detailed implementation about the theory and practice of rendering. Its contents are available free online.

Fundamentals of Computer Graphics cover

Fundamentals of Computer Graphics (5th ed.)

Steve Marschner and Peter Shirley

This book is a good source for a lot of the basic computer graphics material, and goes at a bit gentler pace than the book above. Many of you may own a copy from CS4620. The Cornell library provides access to an electronic edition.