为了简单起见,忽略发射和阴影,可以将渲染方程简化为:
$$L(x,\,\vec \omega) = \int_{\Omega}{f_r(x,\,\vec \omega^\素数,\,\vec \omega \,(\vec \omega^\素\cdot \vec n) \,d\vec \omega^\$$
其中,$f_r$是BRDF,$(\vec \omega^\素\cdot \vec )$是光和表面法线之间夹角的余弦。
对于Lambertian漫射的BRDF $\frac{rho}{pi}$,这很好--我们将它与余弦相乘,看到兰伯特余弦定律的作用。
对于Phong的镜面部分,通常计算像素的颜色如下:
$$I_{out} = I_{in} \,k_{specular} \,(\vec w \cdot \vec r)^\alpha$$
其中$I_{in}$是入射光,$k_{ specular }$是表面的镜面反射率,$\alpha$是Phong指数。注意,在这个方程中没有$(\vec \omega^\素\cdot \vec )$。
要使用呈现方程并得到与上面常见的Phong方程相同的像素值,我们需要编写:
$$f^{Phong}_r(x,\ \,\vec \omega^ \,\,\vec \omega) = \frac{1}{(\vec \omega^\素\cdot \vec n)} } \,k_{specular} \,(\vec w \cdot \vec r)^\alpha$
注意在$L(x,\,\vec \omega)$中消除余弦的分母中的余弦。
费边·吉森( Fabian Giesen )在他的通归一化因子的推导中说:
这是对原始Phong公式的推导,其中$R \cdot V$项不乘以$cos \theta$。如果您将Phong模型的那个版本写成一个BRDF,那么在分子中最后会有一个$cos \theta$来抵消反射方程中的$cos \theta$因子。这个分子在物理上完全是胡说八道,所以Phong模型的现代公式把它去掉了。
我不明白为什么他说的是分子,而不是分母。这是文章中的错误,还是我的误解?
什么是Phong的现代配方?什么叫取消是“完全无稽之谈”?使用归一化因子,$\frac{\α+ X}{2 \pi}$什么时候应该使用$X=1$,什么时候使用$X=2$?
这里是一个路径跟踪并行比较一个反射球,Phong指数100,$X=2$的归一化.左图像的余弦被抵消,而右边的图像包括它,明显地使边框变暗。


发布于 2018-05-12 13:20:58
绘制方程中的余弦项是计算到达表面的光量,而把它从渲染方程中剔除是他所说的“完全无稽之谈”,这是正确的。原来的Phong模型在渲染方程中没有余弦项,所以如果您想用适当的渲染方程来建模原始的无意义Phong,您需要通过在Phong BRDF中添加余弦分母来破解它。
https://computergraphics.stackexchange.com/questions/7590
复制相似问题