先说事实,我是个UE的菜鸡,至少现在是,有关这个话题我是参考网上资料自学实践。可以这么说资料是好资料,就是对步骤不太全,所以我本着“有手就行”的态度亲测,给大家提供一个可以实操的版本——step by step!
1.新建自己的ush文件
相当的简单,像创建一个txt文件一样,只是修改后缀ush。这里要注意的是不要把ush写成了usf,我亲测过在private文件夹下是没有办法添加usf文件的,具体为什么我不清楚,只是一个实验(其实就是我做错了)。
然后在自定义的ush文件中写自己的代码,这里就要注意ush的语法了,当然随便打开一个ush一看便知:
a).如果你要应用其他文件,那么就#include ...,使用之后就能拿到其他文件中定义的变量,函数等等,但是可以直接写一些可调用的函数:
half3 CalcMyColor_red()
{
return half3(1,0,0);
}
half3 CalcMyColor_green()
{
return half3(0,1,0);
}
half3 CalcMyColor_blue()
{
return half3(0,0,1);
}
如此就写好了自己的ush文件,并定义了三个函数,凡是包含了该ush的文件就可以使用这几个函数了。
2.使用自定义的ush文件(里边的东西)
一个基本的概念,材质编辑器是将节点表以为一个一个可视化节点的HLSL代码压入ShaderTemplate,这个Template就是一个代码框架,在材质编辑器对应的代码中,这个框架叫做:MaterialTemplate.ush
那么在源代码引擎中找到这个ush,包含我们自己写的ush:
#include "..."
//包含我们自己的ush文件
//其实还有一个Shader的文件夹,但是很多资料解释会进行隐式转换
#include "/Engine/Private/MyShaderFile.ush"
#include "..."
当然,还需要在源代码解决方案资源管理器中,右键->添加现有项...浏览到我们自己的ush文件进行添加。即可得到一个包含了自己ush的引擎。
如何使用呢?既然是材质编辑器,我们不妨创建一个材质Test_Mat,使用Custom节点:
注意,我们使用Custom这个可视化节点(会被编译为HLSH塞入Template中),并设置值类型为Float3(主要是这个3),然后这代码部分使用我们自动以的函数CalcMyColor_XXX,这就是来自我们自定义ush的函数。可以看到运作的非常好。
换言之,如果我们写好了更为复杂的shader逻辑,其实也可以使用这种方式来调用,非常的简单。
我的入门第一课,完结!