20.高级细节法线着色器

目的
不同的材质质感增加不同的细节法线
制作过程
思路
假如给角色增加细节法线贴图,就不能和石头一样,
因为石头都是一种材质,角色有皮革,布料,金属等不同材质质感。
上一篇是只能增加一种细节法线,只有石头的细节法线
错误的方法
我们去创建四种不同的法线贴图
错误的处理方式

这里正常是8,这里为了看清楚设置的是1
介绍这些节点的功能,

遮罩的功能就是绘制贴图显示的位置
目前这样的方法有问题,
比如我们使用8种材质,那我们需要导入8张法线贴图。我们贴图越多,着色器就越费。
查看我们的着色器有多费

这表示有164个指令。
这里表示6个贴图

这样错误的方法是比较费。
正确的方法
贴图矩阵
第一个概念使用贴图矩阵,就是一堆贴图,也可以理解成图集。
制作贴图矩阵
创建一个纹理2D数组

创建出来是空的

我们需要增加贴图—创建4个贴图

效果

具体在材质中我们怎么使用这些纹理,我们需要创建一个材质矩阵,创建16个这种材质。
这个材质矩阵就可以给所有角色使用。
注意:使用细节法线的时候我们贴图大小不能太大,推荐使用256
调用材质矩阵
我们目前创建完成,在材质编辑器怎么调用
创建一个空的贴图节点—现在我们刚刚创建的材质矩阵

这里就采样了
在材质里怎么使用贴图图集,一个是UV,类似序列帧贴图

需要输入 UV 还有一个W就是第几张。
这是显示第0张贴图

遮罩贴图我们使用灰度来制作,
问题 为什么不使用RGB来制作通道了?
因为我们使用图集可能使用16张贴图,使用RGBA4个通道不够了,我们使用不同的灰度来制作Mask

我们以这样的方式可以取出很多,这里我们是使用4张贴图,就平均使用4个灰度。

按照 当前的色阶制作遮罩图

不同的色阶显示不同的材质,
导入贴图设置

为什么我们需要设置贴图,这是因为我们使用贴图来计算需要把贴图设置成线性。
不同灰度决定不同的材质
回到UE5材质编辑器,我们怎么使用Mask贴图

我们现在看到我们是有4个不同的灰度。
我们知道颜色范围是 0- 1 ,我们需要把这个灰度的值映射到 0 -3 我们有4张贴图
0-1映射到 0-3

我们需要不同灰度代表一个整数,我们这里增加一个Round节点

这样我们的输入的灰度颜色就会四舍五入取整
扩展 Round节点的使用
取整

输出

检查一下是否输出的是4块颜色信息。
输出到贴图通道

总结
纹理2D数组的使用,可以储存多张纹理,

贴图的不同模式,比如默认的Default 在材质对应的使用Color
注意:这里如果设置的不对可能导致崩溃
Default

Normal

Masks

注意:这里如果设置的不对可能导致崩溃

