Rendering |
![]() |
Digital Image Synthesis, Fall 2007
|
Jump to...
project #1
|
project #3: Reflection ModelsAssigned: 11/22/2007Due: 11:59pm 12/9/2007 Project descriptionThis is a very simple project to get you familiar with pbrt's reflection models. In this project, you are asked to add a Ward's model plugin to pbrt. Please read this paper for Ward's model. There is also a note on Ward's paper. You might want to refer to this if you want to implement sampling for Ward's model. You need to implement full Ward's model, i.e., including the anisotropic one. I will suggest that you test your Ward's model implementation using spheres, such as spheres-aniso.pbrt.Reflection models are parts of the pbrt core. To avoid modify the core, I would suggest that you add a source file ward.cpp for the material plug-in called ward. In the same file, add the source code for the BxDF class, Ward. In the ward material, you only add one BxDF, Ward. Thus, the material simply follows Ward's model. You can then include the material into the pbrt scene and adjust Ward's parameters through the ward material. Below is a sample rendering of the Ward model without importance sampling. It was rendered with path tracing with depth=3 and 1024 samples per pixel. Notice that we did implement Sample_f and Pdf to check whether wi and wo are on the same side even though we did not do importance sampling (we did consine weighted sampling instead). The scene file can be found here. Note that the scene file used half size resolution only. ![]() left: kd=(0.2, 0.2, 0.3), ks=(2.0, 2.0, 2.0), alpha_x=0.2, alpha_y=0.2 right kd=(0.3, 0.3, 0.0), ks=(1.4, 1.4, 1.4), alpha_x=0.5, alpha_y=0.1 SubmissionPlease send TA the source code files that you have created or modified, the scene files and a html report on what you have accomkplished.Reference
|
|||||||
|
|
|||||||