据我了解,BRDF描述了材料对光的反应(入射的直接光和思考)。但是在“ Cook-Torrance”中,我看不到任何有关反射的信息,我不了解如何将其集成,因此只能得到漫反射的光和反射。
我已经阅读了很多有关“扩散术语”(例如“ Oren-Nayar”)是否像DFG提名者中的其他“ D”一样,成为Cook-Torrance的一部分?
我已经从搅拌机艺术家的背景中读到很多关于“ GGX”的东西,我认为这是一种模糊的反映,但似乎我错了,现在我可以在许多不同的情况下找到该GGX术语,例如本教程中的微面正态分布
所以简而言之,问题是:“ Oren-Nayar”和“ GGX”以及“ Cook-Torrance”如何彼此相关(如果有的话),以及如何在这些算法中集成“ vec3反射”?沉重”,请为您的方程式写一个glsl / hlsl版本,它对我来说更容易理解,因此等效性对我有很大帮助。我对这个主题的理解。
#1 楼
DFG出现在基于微面的BRDF系列中。它只是三个术语的乘积:D:微观面分布。
F:菲涅耳系数。
G:微观面之间的几何衰减。
当有人说Cook-Torrance时,通常指的是微面BRDF,其分布(D)为贝克曼,我认为这就是原始Cook-Torrance纸的含义。
GGX实际上只是一个不同的分布(D项)。 GTR是另一个。这些名称通常用作使用该分布的BRDF的快捷方式。
现在所有这些名称都假设在微平面上具有镜面反射(或折射),因此是菲涅耳术语。如果您采取类似的想法,但使用漫射(朗伯)微面,则可以得到Oren-Nayar BRDF。我认为这是基于微面的高斯分布,但我对这些细节不熟悉。
评论
$ \ begingroup $
好的,这有点清楚,但是它仍然不能解释我在射线追踪/行进或使用SSR / cubemap重新发射射线后得到的“ vec3 ReflectionColour”如何处理。就像方程式只考虑了点光源/聚光灯,但对区域光或反射一无所知。似乎“镜面反射”仅与“白点”相关,而不与反射相关,因为这没有意义= /
$ \ endgroup $
–新闻
17-6-5在23:57
$ \ begingroup $
@newin在PBR模型中,镜面反射和反射是同一事物的不同名称。当光线击中光线时,它是镜面反射的高光;当光线击中另一个对象(或环境)时,它是反射。至于您的反射颜色,则取决于射线的产生方式。您要采样直接照明吗?区域灯?整合BRDF和环境图?尝试阅读“使用显式光采样进行渐进路径跟踪”,答案很长,可能会清除该过程中的一些问题。
$ \ endgroup $
–奥利维尔
17年6月6日在1:04
$ \ begingroup $
因此,如果我正确理解“ vec3 ReflectionColour”应被视为一种光,并且如果我想使网格物体发光,我应该在反照率中输入一个值> 1就是这样? (我正在尝试将PBR集成到不同的场景中,第一个是我希望网格物体发光的raymarcher,另一个是使用SSR并可能会使用立方体贴图的游戏引擎)
$ \ endgroup $
–新闻
17年6月6日在12:16
$ \ begingroup $
@newin发出的光只是添加在其他所有内容之上。与BRDF无关。如果您的网格物体除了发光之外什么也没做,那么您甚至不需要追踪任何其他光线。大的反照率会放大光(实际上是错误的),而不是产生光。
$ \ endgroup $
–奥利维尔
17年6月6日下午14:57
评论
可能对您有所帮助的是,“镜面反射”的意思是“像镜子一样”。因此,当谈论镜面反射和漫反射时,镜面反射就是像反射一样的镜像,人们通常称之为反射。扩散只是“事物照亮”。它们也反射光,但是它们从许多不同的方向反射,因此结果并不能识别图像。在真实对象中的镜面反射和漫反射之间存在一定比例,这是其中的一部分。 PBR控件的“粗糙度”参数。您可以尝试阅读原始的Cook-Torrance论文:inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf-请确保也尽可能检查最后列出的参考文献(大部分是在线提供)。这将需要一些时间,但这是一种“深入”了解正在发生的事情的肯定方法。