DreamShaderLang
语言参考

输出绑定

Shader 输出变量、Base 材质属性和 Expression 输出节点绑定规则。

ShaderOutputs 同时负责两件事:

  1. 声明 Graph 最终要写入的输出变量。
  2. 把这些变量绑定到 Unreal 材质属性或辅助输出节点。

基本绑定

Outputs = {
    vec3 Color;
    float Alpha;

    Base.BaseColor = Color;
    Base.Opacity = Alpha;
}

Graph 中给变量赋值:

Graph = {
    Color = Tint;
    Alpha = 0.8;
}

材质属性

Base.* 绑定到 Unreal 材质输入。常用目标:

绑定目标类型
Base.BaseColorfloat3
Base.EmissiveColor / Base.Emissivefloat3
Base.Opacityfloat1
Base.OpacityMaskfloat1
Base.Metallicfloat1
Base.Specularfloat1
Base.Roughnessfloat1
Base.Normalfloat3
Base.AmbientOcclusion / Base.AOfloat1
Base.Refractionfloat3
Base.WorldPositionOffset / Base.WPOfloat3
Base.PixelDepthOffset / Base.PDOfloat1
Base.SubsurfaceColorfloat3
Base.ClearCoatfloat1
Base.ClearCoatRoughnessfloat1
Base.CustomData0float1
Base.CustomData1float1
Base.Anisotropyfloat1
Base.Tangentfloat3
Base.CustomizedUV0Base.CustomizedUV7float2

如果声明类型和目标类型不兼容,生成器会报错。

表达式输出节点

有些 Unreal 材质输出不是 Base.* 属性,而是 MaterialExpression 输出节点。可以使用 Expression(...).Pin[index]

Outputs = {
    float TangentValue;
    Expression(Class="TangentOutput").Pin[0] = TangentValue;
}

规则:

部分说明
Expression(...)创建输出表达式节点。
Class必填,指定 MaterialExpression 类名。
.Pin[index]必填,指定输入 pin 索引。
源变量绑定右侧必须能解析成 Graph 值。

对表达式输出目标,源变量必须先显式声明类型:

Outputs = {
    float TangentValue;
    Expression(Class="TangentOutput").Pin[0] = TangentValue;
}

输出表达式

右侧可以是简单变量,也可以是可解析的 Graph 表达式:

Outputs = {
    Base.EmissiveColor = Tint * Strength;
}

复杂表达式建议先在 Graph 中赋值给命名变量,便于诊断和复用。

保留名 return

return 是特殊输出源名,只能绑定到 Base.* 材质属性。普通输出变量不要命名为 return

Outputs = {
    Base.EmissiveColor = return;
}

这种形式适合单输出 Custom 节点场景;常规材质更推荐声明清晰的命名输出变量。

On this page