UE 材质
UE 中材质的本质:Shader 的生成模板
节点:TexCoord
节点如下,快捷键为U + LeftCick
:
![TexCoord 材质节点](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord%E6%9D%90%E8%B4%A8%E8%8A%82%E7%82%B9.png)
UV 坐标以左上角为原点,横向(红色)为 U,纵向(绿色)为 V
属性
参数:U/V 平铺
分别对应UTiling
和VTiling
,控制纹理在对应轴方向上的重复次数,影响纹理在模型表面的平铺效果
- 值为 1:纹理保持原尺寸,无平铺
- 值大于 1:纹理在对应轴上重复多次,实现平铺效果
- 值小于 1:纹理在对应轴上缩小
原理如下:
红色方块表示TexCoord
的 UV 平铺属性,黄色圆圈表示我们要应用在模型表面的纹理
如果 UV 平铺保持为 1,那么纹理可以和 UV 坐标完美对应
![对纹理应用 TexCoord 节点效果](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord-UV%E5%B9%B3%E9%93%BA%E5%B1%9E%E6%80%A7_02.png)
如果值大于 1,这里以 2 为例,上图的红色方框应当变为如下:
![修改 UV 属性原理](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord-UV%E5%B9%B3%E9%93%BA%E5%B1%9E%E6%80%A7_03.png)
即,在 U 方向上发生重复
![修改 UV 属性后的效果(倍率系数)](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord-UV%E5%B9%B3%E9%93%BA%E5%B1%9E%E6%80%A7_04.png)
如果值小于 1,以 0.5 为例,同理,红色区域的 U 方向被压缩,从而使得黄色纹理只能有一半处于红色区域内,直接看效果
![修改 UV 属性后的效果(倍率系数)](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord-UV%E5%B9%B3%E9%93%BA%E5%B1%9E%E6%80%A7_05.png)
另一种 UV 计算
上边进行的平铺设置相当于让原本的 UV 数值乘上了一个系数,从而实现的缩放变化,这里通过节点实现纹理映射的左右移动。
实现如下连接:
![材质蓝图节点](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord-UV%E5%B9%B3%E9%93%BA%E5%B1%9E%E6%80%A7_06.png)
这次修改这个位置,实现纹理在 U 轴上的平移效果
![左右移动纹理映射位置](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord-UV%E5%B9%B3%E9%93%BA%E5%B1%9E%E6%80%A7_07.png)
原理和之前差不多,只不过红色区域变成了这样:
![左右移动纹理效果的原理示意](/2024/04/29/%E8%BD%AF%E4%BB%B6%E5%AD%A6%E4%B9%A0/UE/UE%E6%B8%B2%E6%9F%93/UE%E6%9D%90%E8%B4%A8/TexCoord-UV%E5%B9%B3%E9%93%BA%E5%B1%9E%E6%80%A7_08.png)
解除镜像
这里还没明白,待完成
参考链接:
节点:SphereMask
细节面板:Usage
面板位置:
Usage Flag 用于标记 Material 的用途(需要材质域选择表面),编译器会针对每一个用途生成对应的 Shader 代码(部分 Flag 可能会共享同一份),默认情况下会自动对应的 Usage Flag
一般推荐取消勾选“编辑器中自动设置使用”
参考链接
查看 ShaderCode
查看从材质生成的 ShaderCode
在编辑器内:窗口->着色器代码->选择对应平台查看;如果要查看本地或最终的 usf 代码,可以在引擎目录中打开:Engine\Config\ConsoleVariables.ini
,对前两个命令;r.ShaderDevelopmentMode=1
和;r.DumpShaderDebugInfo=1
取消注释(删除;),此时可以在项目目录中的\Saved\ShaderDebugInfo\
中看到对应平台的 ShaderCode
这里在材质图表中输出一个纹理,选择无光照模式,查看勾选与不勾选“使用骨骼网格体”的 UsageFlag 最终生成的 Shader 的区别。
查看本地文件:
FLocalVertexFactory
TGPUSkinVertexFactoryDefault
(用于对应 Usage 的版本)
由于这里设置的简单所以只有两个 ShaderCode 文件:
TMobileBasePassPSFNoLightMapPolicy0HDRLinear64
TMobileBasePassVSFNoLightMapPolicyHDRLinear64