[cg] Games202 -- BRDF

实时渲染中的PBR材质分类:

1.微表面材质

2.体积材质 

BRDF公式 

brdf f(i,o)描述的是对于一个入射方向的光,有多少能反射出去

Fresnel Term 

与入射角有关:

入射方向和normal越接近90度,反射越多

 绝缘体(如水,玻璃)反射系数
导体(如金属)反射系数 

计算公式:

\theta是入射角度,\theta为90度时,R(\theta) = 1, 为最大值,\theta为0度时,R(\theta) = R0,为最小值

Normal Distribution Function(NDF) 

微表面法线分布

微表面法线方向越统一-->越是glossy

 微表面法线方向越杂乱-->越是diffuse

NDF描述的是半球面的法线分布--》怎么表示为二维?--》球体拍扁后的球面分布 (projected solid angle, 单位积分为1)

NDF模型种类

1.Beckmann

2.GGX

1.Beckmann分布

与高斯分布类似(高斯分布 - 知乎 (zhihu.com)),\thetah 是法线与半程向量h的夹角,

h越接近法线,分布的越多,

h离法线越远,分布的越少

 tan\theta限制了\theta角度不会超过90度,保证微平面法向不会出现向下的情况,分母部分是在projected solid angle 积分归一化后产生的。

2.GGX(or Trowbridge-Reitz) 分布

特点:长尾, 高光消散的慢

这里的m 等于半程向量h\alpha表示粗糙度 

Geometry Term

表示微表面自遮挡问题,某一微表面会挡住其他微表面,尤其是入射或出射光线接近掠射角的时候(grazing angle)

红色圈起来的部分会被挡住,无法反射光线 ,左图称作shadowing,右图称作masking

由于这些遮挡,输出会变暗--》在靠近grazing angle(90度)的时候会,输出会剧烈减少

(m = halfvector)

例子:

如果没有G像,grazing angle处,分母(n点乘i)为0, f会巨大,出现白边

Multiple Bounce 造成的能量损失

粗糙度越高,物体越暗,沟壑越深,反射光越容易被其他微表面挡住,但multi bounce的能量没被计算进去

 解决方法:

补光--》

被微表面挡住意味着要发生下次bounce弹射

方法 Kulla-County 

渲染方程:

 d\omega = sin\theta d\phi d\theta

可化简为:

u0为入射方向(观察方向),观察方向不同,被遮挡的概率不同

损失的能量就是 1-E(u0)

推导过程:

Eavg通过打表计算

最终结果

有颜色的情况(光线会被吸收)

补光项:(推导略)

参考自:Lecture10 Real-Time Physically-based Materials (surface models)_哔哩哔哩_bilibili 

Linearly Transformed Cosine (LTC)

针对GGX的,多边形光源的,无shadow的 微表面着色问题

参考:LTC(Linearly Transformed Cosines)研究与URP实现 - 知乎 (zhihu.com)

Diseny‘s Principle BRDF

引入原因--》

1.微表面模型解释不了多层材质,如车漆(clear coat)

2.微表面模型参数不友好(物理参数范围不好理解)

参数范围都在0-1之间,且可以混合叠加

specularTint -->specular效果篇白,还是篇黑,(反射画面的强度)

sheen -->天鹅绒,参数越大,球表面绒毛越多

clearcoat--》清漆光滑层度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值