DreamShaderLang
快速开始

第一个材质

从零编写一个 UI Unlit 材质并生成 UMaterial。

下面的示例创建一个 UI 域、Unlit、带颜色参数的材质。

创建文件

在项目中创建:

DShader/Materials/M_DreamPulse.dsm

写入:

Shader(Name="DreamMaterials/M_DreamPulse")
{
    Properties = {
        vec3 Tint = vec3(0.2, 0.6, 1.0);
        float Strength = 1.0;
    }

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

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

    Graph = {
        float t = UE.Time();
        float pulse = UE.Expression(
            Class="Sine",
            OutputType="float1",
            Input=t);

        Color = Tint * (pulse * 0.5 + 0.5) * Strength;
    }
}

保存后,DreamShader 会生成或更新:

/Game/DreamMaterials/M_DreamPulse.M_DreamPulse

这个文件做了什么

区域作用
Shader(Name="...")声明要生成的 Unreal 材质资产。
Properties生成材质参数节点,例如 TintStrength
Settings设置 Unreal 材质属性。
Outputs声明图输出变量,并绑定到 Base.EmissiveColor
Graph创建材质节点并把结果赋给 Color

常见问题

现象检查
没有生成资产确认文件在 SourceDirectory 下,并且包含 ShaderShaderFunction
输出为空确认 Outputs 里有 Base.* = ... 绑定。
UE.Expression 报错确认 Class 是 Unreal MaterialExpression 类名,且写了 OutputType
材质编译报错查看 Unreal Output Log 或 VSCode 桥接诊断。

On this page