总览

在之前的练习中,我们实现了 Whitted-Style Ray Tracing 算法,并且用 BVH 等加速结构对于求交过程进行了加速。在本次实验中,我们将在上一次实验的基础上实现完整的 Path Tracing 算法。至此,我们已经来到了光线追踪版块的最后一节内容。

代码框架

相比上一次实验,本次实验对框架的修改较大,主要在以下几方面:

你需要从上一次编程练习中直接拷贝以下函数到对应位置:

在本次实验中,你只需要修改这一个函数:

可能用到的函数有:

可能用到的变量有:

伪代码:

pseudo-code

如果严格按照上述算法实现,你会发现渲染结果中光源区域为纯黑。请分析这一现象的原因,并且修改 Path Tracing 算法使光源可见。

注意事项

拓展

目前的框架中拆分 sample、eval、pdf,实现了最基础的 Diffuse 材质。请在不破坏这三个函数定义方式的情况下修改这三个函数,实现 Microfacet 模型。本任务不要求你实现复杂的采样手段,因此你依然可以沿用 Diffuse 材质采用的 sample 与 pdf 计算。

cornellbox