原文链接:【抛砖引玉】给UE4材质编辑器加个节点
大部分情况下,我们可以将材质要用到的 hlsl 代码写到 custom 节点里打包成函数,然后直接用。
这不闲着没事,给引擎加点花里胡哨的东西。
主角是下图的整数位运算符,看着花里胡哨,实则没有什么用,就当抛砖引玉吧
-
位运算的结果
-
函数实现
首先打开源码这个路径,Engine\Source\Runtime\Engine\Classes\Materials,这里用的是 4.24 的源码引擎。里面随便挑一个 MaterialExpressionXXX.h 复制一份,改个自己的名字,准备照抄
里面代码也把原来的名字改成自己的名字,也就改几行,需要更多花里胡哨的功能可以去参考一些花里胡哨的节点的源码
打开 \Engine\Source\Runtime\Engine\Private\Materials\MaterialExpressions.cpp ,找个差不多的位置加上改出来的头文件
实现一下头文件里面提到的 构造函数、Compile 函数(让节点干活的函数)和GetCaption 函数(节点显示名字的函数)
打开 \Engine\Source\Runtime\Engine\Public\MaterialCompiler.h ,在 class FMaterialCompiler 里和 class FProxyMaterialCompiler 声明一下这个节点干活的函数,函数里的 A 和 B 指的是连在这个节点 A 和 B 上的节点的 ID
然后到 \Engine\Source\Runtime\Engine\Private\Materials\HLSLMaterialTranslator.h 里实现一下这个函数(这里的 HLSLMaterialTranslator.h 的行数和公版引擎可能不太对的上,前面有一些我的魔改内容,反正差不多是那堆函数里放进去就可以了)
编译引擎中............
材质编辑器里多了刚加的节点
效果和写函数是一样的
生成的 hlsl 就是这样的