Assignment 07 - Sampling and Implementing BxDFs
31 Oct 2018The goal of this assignment is to investigate ideas of BxDFs and important sampling in Monte Carlo evaluation for path tracers.
Download and build smallpt: Global Illumination in 99 lines of C++. (No need to build the 4k version. On the SoC machines, just use the g++ command line compilation listed in the comments at the start of smallpt.cpp to build the simple version specifically. On your own machine, you may need to omit the request to build with OpenMP depending on your setup. This allows a nice speedup with parallelizing threads on multi-core machines, but it is not necessary).
Objectives for Assignment 07:
- Read Walter, et al. 2007 and particularly note the section on sampling the GGX normal distribution.
- Implement another material distinction in smallpt (additional to the diffuse, perfect specular, and perfect refraction included) that completes GGX sampling.
- Complete a few different renders at different roughness values and sample counts.
- Complete a brief pdf documenting your process and including your images that also includes a brief discussion of what is not included in the previous.
Suggested Extensions for Assignment 07 (in no implied order):
- Implement a full material using the Cook-Torrance micro-facet model but using the Fresnel function with plausible values, GGX (Trowbridge-Reitz) normal distribution function, and associated shadow-masking function discussed in Walter, et al. This should be separate from your sampling method. In your pdf description, post and compare a render based on GGX sampling and one using the full material model.
- Use the sampling scheme from smallpt for DIFF but pass it through your micro-facet material using F, D (GGX), and G for radiance calculation. How many samples get this close to your renders sampling using the GGX NDF and the micro-facet material? Illustrate and compare with renders in your pdf description.
- Use the sampling scheme from smallpt for DIFF and also implement an Oren-Nayar diffuse micro-facet material. (See paper under resources or other sources that you reference).
- Implement a triangle intersection test and the ability to load an .obj file. (May use the code included in the earlier assignments if desired or another referenced library). Import a model that you have made and complete a render with a chosen material or more than one render with different materials or parameters.
- Implement an image similar to the one on the first page of the Walter, et al. paper.
Submit by Thursday, November 8 at 2 pm and prepare to present. Your .tgz file or .zip should include:
- Modified smallpt.cpp file.
- Written pdf with images and description of what you achieved and comments on the process.
- Any renders completed during your work.
