陆国伟- · 2021年08月13日

Material小结 2.0

接上文Material小结

刚刚看了‘Path Tracing in Production’,里面提到了Weta digital的Manuka材质系统,在这里总结一下,算是对之前Material小结的一个补充。

1.jpg

之前主要是讲BRDF,现实中不仅包括reflectance,也包括transmittance,因此,除了BRDF外,还需要BTDF,而BS(cattering)DF也是BRDF+BTDF的合集。

Layer-based material system

基于Manuka material system,来介绍这个分层材质系统。用户可以任何组合多个BSDF构成一个材质堆栈(material stack),真实世界的材质大都也是如此,比如下面是对树叶这个材质的分层解读,这里包括譬如角质层,叶肉,表层蜡质等,都有不同的材质表现和反射属性。

2.jpg

Manuka对BSDF进行了归类:BRDF只反射,BTDF只折射,BSDF既反射又折射(半球面),BCSDF(我不清楚这个,大概针对毛发这类材质)。在设计时,所有BSDF都有一个相同的接口,除了要实现Sample,Eval和PDF这些基本方法外,还会提供一些材质特殊的信息,比如平均方向,折射率,粗糙度等

Manuka采用的是一种shade-before-hit策略,通常,我们都是在intersection后获取交点对应物体的材质属性,这一切在Manuka中已经预处理了,好处是支持很多复杂的视觉效果,但缺点是占用大量的内存,因此,压缩是一个很关键的技术,通常,会用8bit来存储颜色,而粗糙度等属性则会用16bit。

3.jpg

材质系统的图层叠加(layering operation)有两种方式:水平和垂直,具体包括Mix,Coat,Blend和Add,其中Mix和Blend属于horizontal,而coating和add属于vertical。个人理解Blend是Mix针对只有两层材质的特殊形式给出的优化,相比blend,add仅支持发光材质。

Capture.PNG
同时,真实世界中,不同材质在叠加时,自身的属性也可能会变化,比如水泥,干水泥较为明亮或中度灰,而湿水泥则变暗,这里会有一个accumulation techniques,在叠加材质时可以更改折射率,粗糙度等属性。

4.jpg

以人体皮肤的例子,我们通过图层叠加的方式,来模拟大千世界各类复杂材质。

作者:Peter6
原文链接:https://mp.weixin.qq.com/s/jt1S1\_cQvGMlhYaYbrLa8A
微信公众号:
LET.jpg

推荐阅读

更多GPU及渲染技术干货请关注Arm Mali GPU技术专栏。
推荐阅读
关注数
101
内容数
18
Arm Mali GPU系列相关技术干货
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息