DreamShaderLang

DreamShaderLang

为了代替虚幻引擎材质“连连看”而生的文本化材质语言。

一句话来说,DreamShaderLang 是为了代替虚幻引擎材质“连连看”而生的语言。

DreamShaderLang 是 DreamShader 插件的源语言。它用 .dsm.dsh 文件描述 Unreal 材质、材质函数、共享 helper、包依赖和材质图连接关系,然后由插件生成标准 UMaterialUMaterialFunction 资产。

这套文档以语言为中心组织,目标是让 DreamShaderLang 像常见编程语言一样可学习、可查询、可引用。

核心模型

概念作用
.dsmDream Shader Material。生成材质或材质函数的主文件。
.dshDream Shader Header。存放共享 FunctionNamespace 与 import。
Shader顶层材质声明,生成 Unreal UMaterial
ShaderFunction顶层材质函数声明,生成 Unreal UMaterialFunction
Graph生成 Unreal 材质节点的图 DSL。
FunctionHLSL 风格 helper,供 Graph 调用。
Namespace组织共享 helper,调用形式为 Namespace::Function(...)
Package可分发的 .dsh 共享库,安装到 DShader/Packages

公开仓库

语言分层

DreamShaderLang 不是把 HLSL 直接塞进材质文件。它分成三层:

层级写在哪里适合表达
资产层Shader / ShaderFunctionUnreal 资产名称、属性、设置、输出绑定。
图层Graph = { ... }变量、节点、表达式、UE.*、材质函数调用、基础 if / else
Helper 层Function / Namespace可复用 HLSL 计算、循环、复杂流程、自包含 Custom 节点代码。

最小材质

Shader(Name="DreamMaterials/M_Minimal")
{
    Properties = {
        vec3 Tint = vec3(1.0, 0.2, 0.2);
    }

    Settings = {
        Domain = "UI";
        ShadingModel = "Unlit";
    }

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

    Graph = {
        Color = Tint;
    }
}

推荐阅读顺序

当前版本

项目内容
DreamShader 插件1.1.0
语言DreamShaderLang
文件扩展名.dsm / .dsh
作者TypeDreamMoon
主要产物UMaterial / UMaterialFunction

On this page