【ue4】【使用】材质

材质编辑器

官链_材质编辑器用户指南

【Exp】 -- 旋转 UV

材质表达式 -- 即材质图表中的节点, 用来实现不同材质效果的逻辑

材质函数 -- 材质图表中可重用的节点集合 -- 用以封装可重用的功能

HLSL Code

我们可以打开 HLSL Code 面板查看整个材质的 HLSL 代码

这个代码是位于 Engine\Shaders\Private\MaterialTemplate.ush 的一个 Shader 模板, 而我们材质中的每一个节点, 都是一些 HLSL 代码片段

当我们编译的时候, 每个节点的 HLSL 代码都会被编译到这个 Shader 模块里, 生成最终的完整 Shader 代码

由此可见, 我们也可以直接修改这个模板, 如直接将自己的 .ush 文件 include 进去

我们可以通过 Custom 节点来写我们自己的 HLSL 代码

Custom 结点可对任意数量的输入执行操作, 并输出操作结果 -- 可能会影响效率 (阻止常量折叠)

例如 我们将一张 贴图 与 纯红色 进行混合

就可以新建一个 CustomNode, 然后输入以下代码

1
2
3
4
5
6
float3 frag_color;

float3 tex_color = Texture2DSample(tex, texSampler, UV);
frag_color = alpha * tex_color + (1.0 - alpha) * color;

return frag_color;

需要注意的是, CustomNode 只支持代码块和参数的传递, 并不支持函数的传递, 但是我们可以通过修改 CustomNode 的源码使其支持函数的引用, 这样做的好处是我们可以在别的地方写 shader, 再通过配置函数表引用过来。

自定义 Shading Model

对于每一个材质而言, 都有一个枚举量 Shading Model 可供选择

这个枚举量预置了当前的 Shader 模型, 即一些宏定义状态的选择

这会导致材质的主节点会有一些 Pin 被禁用 或激活

那么如果我们按照 UE 的这个枚举量的工作逻辑, 给它再加一个枚举状态, 作为我们自定义的 Shading Model, 并使用额外的 Pin 来处理我们自已定义的 Shader 了