Nori is a minimalistic ray tracer written in C++. It runs on Windows, Linux, and Mac OS. Nori 2 was built for the homework assignments in the course Advanced Computer Graphics taught at EPFL. We will be using it as the framework for our assignments as well.
While Nori provides much support code to simplify your development work as much as possible, the code that you will initially receive from us does very little: it loads a scene and saves a rendered image as an OpenEXR image—but the actual rendering code is missing, hence the output image just consists of black pixels. Your task will be to extend this system to a full-fledged physically-based renderer as part of programming assignments and your final project.
You may find the following general references useful:
Feel free to consult additional references when completing projects, but remember cite them in your writeup.
When asked to implement feature \(X\), we request that you don't go and read the source code of the implementation of \(X\) in some other renderer, because you will likely not learn much in the process. The PBRT book is excluded from this rule. If in doubt, get in touch with the course staff.
The goal of these exercises is to help you create the foundation of a good renderer for subsequent assignments and the final project. It is your job to convince us that you have implemented the assignments correctly, through the information provided in your reports and the quality/readability of your code. We will deduct points for poorly written code or inconclusive comparisons/validations in your report. Make sure to start working on the homework as early as possible. Building your own advanced renderer is a lot of fun. Use this great opportunity, and don’t forget to have fun!
For each assignment you should submit a zip package via Canvas containing the following items:
include and src folders containing your codes. DO NOT include the build or any other folders.pdf format. Write your report using LaTeX. The report should contain descriptions of encountered problems, a list of external libraries that you used (if applicable) and the time you spent on each task. The task descriptions may contain more specific instructions on what has to be included..exr as well as an sRGB tonemapped .png image of your rendering that can be directly used for the comparisons in your report. Please still include both versions in the results folder of your package. We would appreciate any comments or criticism to improve the projects in future years. Please use the first section of your report to provide feedback--naturally, this part will not be graded. Examples of information that is useful to us includes: