DreamShader 插件
插件概览
DreamShader 插件的目标、能力和与 DreamShaderLang 的关系。
DreamShader 是一个 Unreal Engine 材质生成插件。它提供 DreamShaderLang 源语言,让材质、材质函数和共享 helper 可以像代码一样维护,并生成标准 Unreal UMaterial 与 UMaterialFunction 资产。
插件仓库:
https://github.com/TypeDreamMoon/DreamShader
解决什么问题
传统 Unreal 材质图在复杂项目里容易出现这些问题:
| 问题 | DreamShader 的处理方式 |
|---|---|
| 节点图难以版本管理 | 使用 .dsm / .dsh 文本源文件。 |
| 重复连接节点 | 用 Function、Namespace 和 Package 复用逻辑。 |
| 材质函数分发麻烦 | 用 ShaderFunction 生成 UMaterialFunction。 |
| 共享函数修改后难以追踪影响 | 通过 import graph 刷新依赖 .dsh 的 .dsm。 |
| 生成资产难以追溯来源 | 在资产 metadata 中记录源文件和 hash。 |
核心能力
| 能力 | 说明 |
|---|---|
.dsm / .dsh 文件模型 | 材质实现和共享头文件分离。 |
Shader | 生成或更新 UMaterial。 |
ShaderFunction | 生成或更新 UMaterialFunction。 |
Graph | 用文本描述 Unreal 材质节点和连接关系。 |
Function | 编写 HLSL 风格 Custom 节点 helper。 |
Namespace | 组织共享 helper,降低命名冲突。 |
SelfContained / Inline | 把 helper 依赖嵌入 Custom 节点。 |
| Package | 通过 GitHub 分发 .dsh 共享库。 |
| VSCode 支持 | 高亮、补全、跳转、诊断和编译命令。 |
语言与插件的分工
| 部分 | 负责 |
|---|---|
| DreamShaderLang | 描述材质资产、Graph、helper、导入关系和 Package 依赖。 |
| DreamShader 插件 | 解析源文件、生成 Unreal 节点、写入资产、保存 metadata。 |
| VSCode 扩展 | 提供编辑器语言服务和 Package 工作流入口。 |
| Package Store Index | 提供可发现的社区 Package 列表。 |
产物
| 源声明 | Unreal 产物 |
|---|---|
Shader(Name="...") | UMaterial |
ShaderFunction(Name="...") | UMaterialFunction |
Function | Custom 节点代码和生成 helper include。 |
.dsh | 不直接生成资产,作为共享依赖参与 .dsm 编译。 |
适合场景
| 场景 | 是否适合 |
|---|---|
| 大量风格一致的 UI / Surface 材质 | 适合。 |
| 需要版本管理材质逻辑 | 适合。 |
| 团队共享材质函数库 | 适合。 |
| 临时做一个简单节点图 | 可以,但手动材质编辑器也足够。 |
| 完整替代所有 HLSL shader pipeline | 不适合,DreamShader 目标是 Unreal 材质资产生成。 |