DreamShader 插件
插件工作流
从编辑 DreamShaderLang 到生成 Unreal 材质资产的日常流程。
DreamShader 的推荐工作流是:文本源文件作为真实来源,Unreal 资产作为生成结果。这样材质逻辑可以被搜索、审查、复用和版本管理。
日常流程
- 在
DShader中创建或修改.dsm/.dsh。 - 在
.dsh中维护共享Function和Namespace。 - 在
.dsm中通过import引入共享文件或 Package。 - 在
Shader/ShaderFunction的Graph中描述节点连接。 - 保存源文件,或通过 VSCode 扩展执行重编命令。
- 在 Unreal Editor 中查看生成的材质或材质函数。
.dsm 工作流
.dsm 是资产入口:
Shader(Name="DreamMaterials/M_Tinted")
{
Properties = {
vec3 Tint = vec3(1.0, 0.5, 0.25);
}
Settings = {
Domain = "UI";
ShadingModel = "Unlit";
}
Outputs = {
vec3 Color;
Base.EmissiveColor = Color;
}
Graph = {
Color = Tint;
}
}.dsh 工作流
.dsh 适合放共享 helper:
Namespace(Name="Color")
{
Function ApplyTint(in vec3 color, in vec3 tint, out vec3 result) {
result = color * tint;
}
}.dsm 引入:
import "Shared/Color.dsh";保存 .dsh 后,插件会刷新依赖它的 .dsm。
生成和缓存
DreamShader 会在生成资产时记录:
DreamShader.SourceFile
DreamShader.SourceHash
DreamShader.GeneratedAtUtc如果源内容没有变化,可以跳过重复生成。这个机制适合全量扫描或自动保存场景。
团队协作建议
| 内容 | 建议 |
|---|---|
.dsm / .dsh | 提交到版本库。 |
| Package 锁文件 | 团队协作时建议提交,保证依赖来源一致。 |
| 生成材质资产 | 根据项目资产管理策略决定是否提交。 |
| 公共函数 | 放到 Shared 或 Package 中。 |
| 复杂材质 | 把 Graph 节点连接和 HLSL helper 分层,不要把所有逻辑堆在一处。 |