【转载】UE5 导入自定义 Shader 模块

1,995 阅读1分钟

原文链接:Unreal5.0自定义Shader加载

Unreal 5.0 材质中添加自定义 Shader 代码(Custom Shader)

必须的要求

  • Unreal 工程是 C++ 工程。

解决方案:

  1. 在编辑器中新建 C++ 空类,等待编译完成后,用 visual studio 打开后缀为 .sln 的 c++ 工程。
  2. 鼠标右键点击 .uproject 文件,点击 generate project with unreal

自定义 Shader 目录

我们需要完成将以下目录结构中的 Shaders 文件夹映射到程序中,以便于程序直接 include


测试自定义HLSL文件:

添加(自定义模块的)文件映射路径

  1. 找到 /{YourProjectName}/Source/{YourProjectName}/{YourProjectName}.Build.cs 文件。添加 RenderCore

  2. 在上一步同样的路径下,编辑 {YourProjectName}.h 头文件。添加以下代码:

#include "Modules/ModuleManager.h"

class F{YourProjectName}Module : public IModuleInterface
{
public:
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;
};
  • 例如
  1. 编辑 {YourProjectName}.cpp 文件。添加以下代码:
#include "Misc/Paths.h"

void F{YourProjectName}Module::StartupModule()
{
        /// @note 和上一步名称对应,Shaders 文件夹
	FString ShaderDirectory = FPaths::Combine(FPaths::ProjectDir(), TEXT("Shaders"));
	AddShaderSourceDirectoryMapping(TEXT("/Project"), ShaderDirectory);

}

void F{YourProjectName}Module::ShutdownModule()
{
}
  • 例如 \
  1. 编辑 {YourProjectName}.cpp 文件,将刚刚创建的类传递给引擎。
IMPLEMENT_PRIMARY_GAME_MODULE(F{YourProjectName}Module, {YourProjectName}, "{YourProjectName}" );
  • 如下最后一行代码

导入自定义 Shader 模块

打开 Unreal 编辑器,在 Material 目录下新建一个材质,然后创建一个 Custom 节点:

Details 面板上编辑 Codeinclude 我们自定义的 usf 文件,并注意 Input Name 最好不要设置 None


然后就可以导入自定义 Shader 模块到 Unreal 引擎了,Have fun!!!

参考

延申阅读