虚幻5.6插件添加自定义shader
主要是对官方文档的一个补充:虚幻引擎插件中的 Shader | 虚幻引擎 5.6 文档 | Epic Developer Community
添加虚拟源文件路径
查看代码
void FYKComputeModule::StartupModule()
{
// 查找插件
TSharedPtr<IPlugin> Plugin = IPluginManager::Get().FindPlugin("YKCompute");
if (!Plugin.IsValid())
{
UE_LOG(LogTemp, Error, TEXT("YKCompute plugin not found!"));
// 列出所有可用插件以调试
TArray<TSharedRef<IPlugin>> AllPlugins = IPluginManager::Get().GetDiscoveredPlugins();
for (const TSharedRef<IPlugin>& AvailablePlugin : AllPlugins)
{
UE_LOG(LogTemp, Warning, TEXT("Available plugin: %s"), *AvailablePlugin->GetName());
}
return;
}
// 获取基础目录
FString PluginBaseDir = Plugin->GetBaseDir();
// 检查基础目录是否存在
if (!FPaths::DirectoryExists(PluginBaseDir))
{
UE_LOG(LogTemp, Error, TEXT("Plugin base directory does not exist: %s"), *PluginBaseDir);
return;
}
// 组合路径
FString PluginShaderDir = FPaths::Combine(PluginBaseDir, TEXT("Shaders"),TEXT("Private"));
// 检查着色器目录是否存在
if (!FPaths::DirectoryExists(PluginShaderDir))
{
UE_LOG(LogTemp, Error, TEXT("Shader directory does not exist: %s"), *PluginShaderDir);
return;
}
// 映射着色器目录
AddShaderSourceDirectoryMapping("/Plugin/YKCompute/Shaders/Private", PluginShaderDir);
}
这里有个注意的点,从添加映射器目录的内部可以知道目录是没什么用的,只是使用的时候要用对应的路径比如我把第一个参数设置为"ABC"。
IMPLEMENT_SHADER_TYPE(,FCompute, TEXT("/ABC/Compute.usf"), TEXT("CSMain"), SF_Compute);
导入的时候也用ABC一样是可以用的,这里不是说可以乱填,而是不必那么严谨,被这个玩意儿坑了点时间。

浙公网安备 33010602011771号