【转载】【抛砖引玉】给 UE4 材质编辑器加个节点

367 阅读1分钟

原文链接:【抛砖引玉】给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 声明一下这个节点干活的函数,函数里的 AB 指的是连在这个节点 AB 上的节点的 ID

然后到 \Engine\Source\Runtime\Engine\Private\Materials\HLSLMaterialTranslator.h 里实现一下这个函数(这里的 HLSLMaterialTranslator.h 的行数和公版引擎可能不太对的上,前面有一些我的魔改内容,反正差不多是那堆函数里放进去就可以了)

编译引擎中............

材质编辑器里多了刚加的节点

效果和写函数是一样的

生成的 hlsl 就是这样的