Nic*_*vac 5 reflection graphics rendering raytracing montecarlo
我一直在查看 Kevin Beason 的路径跟踪器“smallpt”(http://www.kevinbeason.com/smallpt/),并有一个关于镜面反射计算的问题(第 62 行)。
我对渲染方程(http://en.wikipedia.org/wiki/Rendering_equation)的理解是,要计算差分区域的出射辐射,您需要对差分区域上方半球中每个差分立体角的入射辐射进行积分,由 BRDF 和余弦因子加权,余弦因子的目的是减少对以更多掠射角入射光降落在该区域的差分辐照度的贡献(因为这些角度的光将传播到更大的区域,这意味着所讨论的差异区域将接收更少的这种光)。
但是在 smallpt 代码中,这个余弦因子不是第 62 行镜像反射计算的一部分。(它也从漫反射计算中省略,但我相信这是因为漫射光线是用余弦加权重要性采样选择的,这意味着不需要显式乘以余弦因子)。
我的问题是为什么镜面反射计算不需要余弦因子?如果入射辐照度相同,但入射角变得更加掠过,那么无论是考虑漫反射还是镜面反射,落在差分区域的辐照度都不会降低吗?
这是我最近提出的一个问题:为什么镜面反射的BRDF在反射方向是无穷大的?
对于完美的镜面反射,BRDF 在反射方向上是无限的。所以我们不能整合渲染方程。
但是我们可以根据能量守恒使反射辐射等于入射光。
这是一个非常好的问题。我不完全理解,但让我尝试给出答案。
在漫反射计算中,通过采样包含余弦因子。在入射光线可能的半球体中,先验地更有可能是直接来自上方而不是直接来自地平线。
在镜像计算中,通过采样包含余弦因子。出于入射光线可能来自的单一方向,它更有可能是先验的 - 你知道我要去哪里。
如果您通过入射光线锥体(对于无光泽表面)对粗反射进行采样,您将再次需要考虑余弦权重。然而,对于单个可能的入射方向的微不足道的情况,采样减少到if true
。