原文链接:Unreal5.0自定义Shader加载
Unreal 5.0 材质中添加自定义 Shader 代码(Custom Shader)
必须的要求
- Unreal 工程是 C++ 工程。
解决方案:
- 在编辑器中新建 C++ 空类,等待编译完成后,用 visual studio 打开后缀为
.sln的 c++ 工程。 - 鼠标右键点击
.uproject文件,点击 generate project with unreal
自定义 Shader 目录
我们需要完成将以下目录结构中的 Shaders 文件夹映射到程序中,以便于程序直接 include。
测试自定义HLSL文件:
添加(自定义模块的)文件映射路径
-
找到
/{YourProjectName}/Source/{YourProjectName}/{YourProjectName}.Build.cs文件。添加 RenderCore -
在上一步同样的路径下,编辑
{YourProjectName}.h头文件。添加以下代码:
#include "Modules/ModuleManager.h"
class F{YourProjectName}Module : public IModuleInterface
{
public:
virtual void StartupModule() override;
virtual void ShutdownModule() override;
};
- 例如
- 编辑
{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()
{
}
- 例如
\
- 编辑
{YourProjectName}.cpp文件,将刚刚创建的类传递给引擎。
IMPLEMENT_PRIMARY_GAME_MODULE(F{YourProjectName}Module, {YourProjectName}, "{YourProjectName}" );
- 如下最后一行代码
导入自定义 Shader 模块
打开 Unreal 编辑器,在 Material 目录下新建一个材质,然后创建一个 Custom 节点:
在 Details 面板上编辑 Code,include 我们自定义的 usf 文件,并注意 Input Name 最好不要设置 None 。
然后就可以导入自定义 Shader 模块到 Unreal 引擎了,Have fun!!!