本人笔记,不喜勿喷
PBR在英文里面是 Physically Based Rendering 翻译成中文就是基于物理的渲染。
反射 散射 生成diffuse 漫反射
反射 生成Specular 镜面反射
进入物体生成透射
实现pbr渲染,抽象出来了相应的渲染方程
BSDF 双向散射表面分布函数,
这个由两部分组成,一部分是表面的函数 BSSRDF(双向散射表面反射分布函数)由BRDF(双向反射率分布函数)和SSS(次表面散射Subsurface scattering)组成。
另一部分是BSSTDF(双向散射表面透射率分布函数),由BTDF(双向透射率分布函数)和SSS(次表面散射Subsurface scattering)组成。
它们整体的组成了一个完整的渲染方程。
里面的重点是BRDF,简化计算,广泛应用于游戏领域。
基于微平面理论的BRDF
理论原理,在微观视角小的物体都是凹凸不平的,根据此角度进行相关推理而出。
迪士尼的PBS
基本原则:
- 艺术导向,并不一定物理正确
- 直观参数,而不是物理类参数,方便调试
- 参数尽可能少,范围应保持在0到1
- 所有参数组合尽可能健壮且合理,就是相互叠加或者去除某个效果不会产生错误效果
实现:
漫反射项:迪士尼的diffuse
镜面反射:microfacet Cook-Torrance BRDF
这个分出三项来解释:D项 (法线分布函数)镜面高光 F项 菲涅尔 G项 几何遮挡
模拟方程:
用的最多的是 Schlick ,他提出了一种近似得方法,利用已知的F0,就是默认的反射率,来求出菲涅尔反射率。

光照公式进一步优化:
(DiffuseColor / Pi + (D * Roughness) * (V * Roughness) * (F * SpecularColor)) * NdotL * LightColor
基于物理的环境光照
漫反射
- 立方体映射
- 球谐光照
- 蒙特卡洛积分
镜面反射
分解求和近似
LD 预过滤环境映射 就是环境反射球 mipmap
DFG 环境BRDF 使用2D LUT或者解析拟合 函数如下
间接光照公式:IndirectLighting = DiffuseColor / pi * SH + LD * DFG(SpecularColor)
直接光照公式: DirectLighting = (DiffuseColor / pi + D(Roughness,x) * V(Roughness,x) * F(SpecularColor,x) )* NdotL * LightColor
AO 环境光遮蔽
一般使用的两种:
一种是自身物体生成,可以通过软件烘焙出的,用于自身的,一般是AO贴图。
另一种是物体和物体之间生成的,可以通过屏幕空间技术得到,比如SSAO。
一般两者取最小的值进行混合。(个人感觉取中间值比较好)。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!