DreamShaderLang
DreamShader 插件

安装插件

在 Unreal 项目中添加 DreamShader 插件并准备语言源目录。

DreamShader 作为 Unreal 项目插件使用。安装后,项目可以识别 .dsm / .dsf / .dsh 源文件,并在保存或手动重编时生成材质、材质函数和 Material Layer 函数资产。

获取插件

公开仓库:

https://github.com/TypeDreamMoon/DreamShader

可以通过 Git 克隆或下载源码包,再放入 Unreal 项目的插件目录。目录名建议保持为 DreamShader,便于团队成员和文档统一。

当前公开文档对应插件版本 1.4.0。该版本基于 Unreal Engine 5.7 持续开发,并已通过单插件 RunUAT BuildPlugin 构建验证 Unreal Engine 5.35.45.55.65.7

在 Windows 上,UE 5.35.4 可能需要 MSVC 14.38 工具链。较新的编译器可能会先在旧版引擎头文件处失败,还没有进入 DreamShader 插件代码编译。

启用流程

  1. 将插件加入 Unreal 项目。
  2. 在 Unreal Editor 的插件面板中启用 DreamShader。
  3. 重启 Unreal Editor。
  4. 创建 DreamShaderLang 源目录,默认名称为 DShader
  5. 创建 .dsm.dsh 源文件。
  6. 保存源文件或使用 VSCode 扩展命令触发重编。

项目设置

打开 Project Settings > DreamPlugin > Dream Shader 可以看到插件配置。

设置说明
SourceDirectoryDreamShaderLang 源文件根目录,默认使用 DShader
GeneratedShaderDirectory普通 Function / GraphFunction 生成 helper include 的目录,可按项目需要配置。
AutoCompileOnSave保存源文件时是否自动刷新资产。
SaveDebounceSeconds保存防抖时间,避免连续保存触发过多编译。
VerboseLogs输出更详细日志,适合排错。
OpenInNewWindow从 Unreal 打开 DreamShader VSCode workspace 时是否新开窗口;关闭后会复用已有 VSCode 窗口。

引擎兼容验证

如果只想验证插件能否在某个 Unreal 版本下编译,不需要构建完整项目目标,可以使用单插件打包命令:

& "<EngineDir>\Engine\Build\BatchFiles\RunUAT.bat" BuildPlugin `
  -Plugin="<ProjectDir>\Plugins\DreamShader\DreamShader.uplugin" `
  -Package="<OutputDir>\DreamShader" `
  -TargetPlatforms=Win64 `
  -Rocket

当前 1.4.0 版本在 Windows 上已按上述方式验证:

Unreal Engine状态
5.7已验证
5.6已验证
5.5已验证
5.4已验证
5.3已验证

验证安装

创建一个最小 .dsm

Shader(Name="DreamMaterials/M_InstallCheck")
{
    Settings = {
        Domain = "UI";
        ShadingModel = "Unlit";
    }

    Outputs = {
        vec3 Color;
        Base.EmissiveColor = Color;
    }

    Graph = {
        Color = vec3(0.2, 0.6, 1.0);
    }
}

保存后,如果项目中生成了对应 UMaterial,说明插件编译链路正常。

如果同时使用 VSCode 扩展,DreamShader 会在项目 Saved/DreamShader/Bridge 下写入诊断、material-expressions.json 和材质预览结果。扩展会读取这些文件,用于 Bridge 面板、编辑器诊断、动态 UMaterialExpression 补全和 .dsm 材质预览。

注意事项

项目建议
源文件.dsm / .dsf / .dsh 纳入版本管理。
生成资产视项目策略决定是否提交。
共享库推荐通过 Package 或项目共享 .dsh 管理。
错误定位先看 VSCode 诊断,再看 Unreal Output Log。

本页目录