URP | PBR材质(三)-优化整理PBR

整合代码
定义函数库
目前代码很多,我们定义函数库,把函数放入函数库里。
定义一个函数库,创建一个文件,命名PbrData
Shader内引入我们自定义的函数库+

把自定义函数导入
我们把自定义2个函数 一个整体PBR 一个是直接光部分这个部分是给多光源计算做准备。
把PBR计算合并到一个函数里,
我们回到Shader里调用这个定义的函数
输出结果就可以
其他扩展
法线翻转
我们有时候使用的法线贴图,有2种格式

URP | Normal法线贴图 - 哔哩哔哩 (bilibili.com)
定义需要的属性
修改法线
这贴图这里增加一个开关,反向 Y轴
粗糙度也有时候需要翻转
增加AO效果
准备增加 AO效果
定义一个变量控制 贴图的强度
函数库里PBR函数
在直接光高光反射加入 AO计算
间接光漫反射 和反射加入AO效果
第一个是间接光漫反射,第二个是间接光高光反射
效果

可以明显看到接缝处更暗
增加自发光
自发光贴图,我们需要 3个变量 , 一个自发光贴图,自发光颜色,自发光强度
在直接光部分增加 自发光颜色
直接光漫反射
效果

阴影效果
增加关键字
获取主光源,
计算阴影
灯光计算阴影,计算灯光距离衰减和阴影衰减
在漫反射阶段,计算阴影衰减
注意:这里是计算阴影,所以我们就给直接光增加就可以
新建一个Pass 具体细节查看
支持多光源
增加关键字
定义一个变量控制是否开启多光源
在下面计算多光源效果。
多光源我们只需要考虑直接光照就可以。
全代码
函数
