我一直在查看Kevin Beason的路径跟踪器“smallpt”(http://www.kevinbeason.com/smallpt/),并且对镜像反射计算有疑问(第62行)。
我对渲染方程(http://en.wikipedia.org/wiki/Rendering_equation)的理解是,要计算一个微分区域的输出辐射,您可以将微分区域上方半球中每个微分立体角上的输入辐射积分,并用BRDF和余弦因子加权,然后将其积分。余弦因数的目的是减少入射光在更大掠射角时对落在该区域上的差分辐照度的贡献(因为这些角度的光将散布在较大的区域上,这意味着所讨论的差分区域将接收较少的此灯)。
但是在小码中,此余弦因子不是第62行上镜面反射的计算的一部分。(漫射计算中也将其省略了,但我相信是因为漫射射线是通过余弦加权重要性采样选择的,表示不需要通过余弦因子进行显式乘法)。
我的问题是为什么镜面反射计算不要求余弦因子?如果入射辐射相同,但是入射角变得更大,则无论考虑考虑漫反射还是镜面反射,都不会减少降落在微分区域上的辐照度吗?
最佳答案
这是我最近提出的一个问题:Why the BRDF of specular reflection is infinite in the reflection direction?
为了实现完美的镜面反射,BRDF在反射方向上是无限的。因此,我们无法积分来表示方程式。
但是根据能量守恒,我们可以使反射辐射等于事件。
关于reflection - 路径跟踪: why is there no cosine term when calculating perfect mirror reflection?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22431912/