所以我正在写我自己的路径跟踪渲染器,现在我只实现了旧的Blinn模型,我们分别计算了材料的漫射和镜面成分,每个物体都有一个镜面和一个漫射颜色。
现在向更一般的方向,我希望能够渲染不同类型的物体--木材,抛光木,完美的镜子,比如反射等等。然而,所有这些信息让我困惑于如何实现这些BSDF,或者换句话说,我应该如何选择何时应用某个BSDF,或者将两者结合起来呢?
这通常是用物质的方法来完成的。材料是扩散,光泽度或完美的镜面定义,我应该使用的BSDF。
我阅读了PBRT的线索,它们将表面反射分解为4种类型。漫射,光斑,镜面和复古反射。然后,他们实现了一个enum,它存储与这些反射对应的类型。
枚举具有以下类型
BSDF_REFLECTION
BSDF_TRANSMISSION
BSDF_DIFFUSE
BSDF_GLOSSY
BSDF_SPECULAR
BSDF_ALLBSDF_ALL是所有标志的组合。这个界面看起来不错,但有一点混乱。如果BSDF_ALL组合了所有标志,那么这意味着曲面可以是diffuse和specular。然而,这似乎很奇怪,一个完美的镜面不能扩散。虽然Glossy + Diffuse是有意义的(磨光的木头,在粗糙的墙上画画),但diffuse + specular和glossy + specular对我来说没有意义。发布于 2018-09-03 23:23:25
虽然库克-托伦斯BRDF的镜面术语在路径跟踪中得到了广泛的应用,但最初的BRDF是用于栅格化的(它是在路径跟踪出现之前提出的)。加权漫射和镜面分量之和(即$R=dR_d+sR_s,d+S \leq 1$)不能代表漫射和镜面物质元素(如折射、塑料菲涅耳等)相互作用可能产生的复杂结果。
实际上,一种更好的基于物理的材料表示模型将是层模型。例如,光滑和粗糙的导体可以通过一个独特的层来模拟,这个层代表的是库克-托兰斯BRDF的镜面项。光滑和粗糙的介质可以通过一个独特的BSDF建模。另一方面,塑料可以通过使用的两层进行建模:最上面的一层表示介电层( BSDF),第二层在介电层之下,代表一种漫射材料(例如,lambertian或Oren)。这种塑料双层装置能够模拟塑料的菲涅耳反射率(通过介质层)、塑料颜色(通过介质下面的有色漫反射层反射的光)、介质吸收的光(通过实施比尔定律)等。
基于层的材料模型非常接近真实生活中的实际情况。我已经写了一个相关的答案,还有更多的细节,这可能对你有帮助(我在答案中包含了一些参考):https://computergraphics.stackexchange.com/a/5761/5681
最初的库克-托兰斯没有适当地节约能源(我已经发布了一个关于那个这里的问题)。2007年,Walter等人。已经发表了论文粗糙表面折射的微面模型,其中他们提出了一个基于库克-托伦斯的模型,适合于路径跟踪。
在分层材料方面,我实现了Weidlich和Wilkie,任意分层微面曲面提出的系统,给出了一个比较通用的分层材料模型。在此之后,人们提出了更复杂的层状材料模型。其中之一是温泽尔·雅各布( Wenzel )的一种绘制层状材料的综合框架。有一篇新的论文(我想是在2017年发表的),它支持表层的地下散射(当我找到它时,我会在这里添加它)。
我认为PBRT也使用基于层的材料,但我不知道它们是如何实现的。
https://computergraphics.stackexchange.com/questions/8013
复制相似问题