-
1.参考 来源:
-
https://learnopengl-cn.github.io/07%20PBR/01%20Theory/
-
flashyiyi大佬 :https://zhuanlan.zhihu.com/p/33464301
-
Gumoumoumou大佬:
-
雪风大佬 :;spm_id_from=333.337.0.0
-
2.概念:PBR,或者用更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering),它指的是一些在不同程度上都基于与现实世界的物理原理更相符的基本理论所构成的渲染技术的集合
-
3.判断一种PBR光照模型是否是基于物理的条件
-
应用基于物理的BRDF。
-
能量守恒。
-
基于微平面(Microfacet)的表面模型。
-
4.公式:
-
核心方程:不好理解有点
-
更換後的方程
-
符合美术的理解
-
float3 specular=(D*G*F)/(4*(NdotV)*NdotL+ 0.00001);
-
float3 diffuse =Kd*col/UNITY_PI;
-
float3 finalcol=(specular+diffuse)*_LightColor0*NdotL*shadow;
-
5.三个函数
-
1.镜面高光:正态分布函数 Normal Distribution Function (参数:normal,viewDir,lightDir,粗糙度)
代码部分
2,几何遮蔽:几何函数 Geometry function (参数:normal,viewDir,lightDir,粗糙度),即核心方程的G项,它是描述入射射线(即光照方向)和出射射线(视线方向)被自己的微观几何形状遮挡的比重。
代碼
3.菲涅尔方程:Fresnel equation (参数:normal,viewDir,金属度)
代碼
6.直接光照和间接光照
直接光照:
间接光照
7.整合
属性部分:三张贴图
-
基本颜色
-
金属度 粗糙度 AO可以整合到一张贴图 分别放在RGB通道
-
法线贴图
pass部分
-
forwardbase :基本pass,需要计算间接光照
-
forwardadd :混合one one 不计算间接光照
-
shadowcaster:计算阴影