我的专栏目录:
小IVan:专题概述及目录![图标](https://i-blog.csdnimg.cn/blog_migrate/d6ea8e09530a242b2ee5802be9b6a242.png)
上篇推导了一些通用公式。本来打算在第一卷就全部写完的,结果知乎有字数限制?我写超出字数限制的部分全部被删掉了!被删掉了!被删掉了!于是只好开个尾巴。下面就将使用之前的理论的公式推导一些特殊的光照模型
上篇链接:
小IVan:虚幻4渲染编程(重写渲染管线篇)【第一卷:从零开始推导PBR渲染模型---上】
【布料】
我之前有做过一些布料的效果
小IVan:虚幻4渲染编程(材质进阶篇)【第一卷:影视剧各种衣料--上】
这里我们将一起来推导它的BRDF。由线性理论,我们可以把BRDF的漫反射项和镜面高光项拆开来。
漫反射项:
我们的布料模型仍然依赖于能量守恒的Lambertian漫射BRDF。并提供可选的次表面散射项。 这个额外的分量不是基于物理 的,可用于模拟某些类型织物中光的散射,部分吸收和再发射
....................................................(1)
其中 是镜面反射中的菲涅尔项,在实践中,可以将
省去。
使用包裹漫射照明技术以其能量保守形式实现次表面散射:
.......(2)
其中 ,一般情况下固定
,漫反射分量不能乘以 。
镜面反射:
我们使用的布镜面BRDF是Ashikhmin和Premoze描述的改进的微平面 BRDF。 在他们的论文中,Ashikhmin和Premoze指出,分布项是对BRDF有影响的,并且阴 影/掩蔽分量对于他们的天鹅绒分布来说不是必需的。 分布项本身是反向高斯分布。 这有助于实 现模糊照明(向前和向后散射),同时添加偏移以模拟前向镜面反射影响。 所谓的天鹅绒NDF定 义如下:
....................................(3)
而Neubelt和Pettineo提出了这个NDF的标准化版本:
........................(4)
所以完整的镜面BRDF使用更平滑的变体替换传统cook的分母可得
...................................(5)
经过优化以适合半浮点格式并避免计算昂贵的余切,而 是依赖于三角恒等式,可以得到如下代码:
![v2-6b6d592cb744d62841729a372531a42d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/6bb0e6029ad4a0b4590f8c9be3bd412a.jpeg)
Estevez和Kulla提出了一种基于指数正弦而不是倒置高斯的不同NDF(称 为“查理”光泽)。 这个NDF很有吸引力:它的参数化感觉更加自然和直观,它提供了更柔和的外 观,如公式 所示,它的实现更简单:
....................................................(6)
![v2-2dc867fc3054559fe2f2243885ad258b_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/db8a39cf9f3b3088670952eab6f986c0.jpeg)
【Clear Coat---车漆】
多层材质在世界上其实非常普遍车油漆,汽水罐, 漆木,丙烯酸等都可以用这种材质模型来描述。
![v2-57bd8d7a3651c70fb5e0259ed22bd339_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/2f779d6b32c4f429c14ea46e857c16ad.jpeg)
由于入射光将穿过透明涂层,我们还必须考虑能量损失。 然而,我们的模型不 会模拟相互反射和折射行为。
![v2-100f9a17db054a3009661763a0f6a8de_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f11fe4f7cd50b58372b9d47af7e011fd.jpeg)
透明涂层将使用标准模型中使用的相同Cook-Torrance microfacet BRDF进行建模。 由于透明涂 层总是各向同性和电介质,粗糙度值较低,我们可以选择更便宜的DFG分 量而不会明显牺牲视觉质量。
............................................(7)
![v2-c27a5bd0e09090965b73ef663ea68b91_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/150fbdcfd5f3297f0d0c42ae29a3eb4f.jpeg)
为我们必须考虑到添加透明涂层引起的能量损失,我们可以重新表征BRDF:
.................(8)
其中 是透明图层的菲尼尔分量。
是透明图层的BRDF。镜面反射分量乘以
是为 了保持能量守恒,因为光进入并离开透明涂层。 乘以
的漫反射分量是对能量守恒的尝试。
![v2-31369a980a7065af502c7ef51378fb86_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0f9574a4028cf13348de760918fa9fb8.jpeg)
透明涂层的存在意味着我们应该重新计算 ,因为它通常基于空气-材质界面。 因此,基础层需 要基于透明涂层材质界面来计算 。
这可以通过从 计算材质的折射率(IOR),然后根据新计算的IOR和透明涂层的IOR(1.5)计 算新的 来实现。
首先,我们计算基础层的IOR:
![v2-f6c74079dfa0a31e98498d8b2a285f6e_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/6575905ba28692dc2c426226e11e6b67.jpeg)
然后我们从这个新的折射率计算新的 :
![v2-250e770aedc3340be159923ea2d16a95_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/dce752855a61d2220ebdd0cd27a1e79d.jpeg)
由于透明涂层的IOR是固定的,我们可以结合这两个步骤来简化:
![v2-b861940d7967cd3300143798eb34b910_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/a1e84896820a11a531d59fadef457ec6.png)
【双面次表面散射】
这种模型适合于树叶这种类型的物体
![v2-0914c0af2f9880226d59335906dea06e_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fc0a0076dc7486183d7a62977f6b5b1f.jpeg)
![v2-d65428b9536bf430345fac7773799454_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/bddc19ab56f35b35ef12a31f2c7dbb43.jpeg)
什么?质疑我动画,打光,氛围的制作能力?好吧我去做个小短片放松一下。
![v2-16096dab79e42077c0025ae18da9b0df_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fbe2e787ee353dfe6dad163e864e9bd2.jpeg)
Enjoy It!
参考资料
[1] http://blog.stevemcauley.com/2011/12/03/energy-conserving-wrapped-diffuse/