基于材质表达式

使用基于材质表达式的着色模型,将多个着色模型合并到单个材质中。

Windows
MacOS
Linux
参见

基于材质表达式 的着色模型是一项高级功能,用于通过材质图表中的逻辑将多个着色模型合并到单个材质(或材质实例)中。

FromMatExpression.png

使用

  1. 在材质中选择 材质输入(Material Inputs)(左上)或 材质属性(Material Attributes)(左下)节点,并在其 细节(Details) 面板中,将 着色模型(Shading Model) 设置为 基于材质表达式(From Material Expression)

    Setting_FromMatExpresssion.png

  2. 选中后,材质输入节点 着色模型(Shading Model) 上将有一个新输入可用。

    MaterialInputs_ShadingModel.png

  3. 右键单击材质图表,搜索并添加 着色模型(Shading Model) 节点。

    ShadingModel.png

  4. 用其下拉菜单选择所要使用的着色模型。

    SelectShadingModel.png

以下是设置材质时使用不同工作流的一些示例。

材质中已用的着色模型

使用 着色模型(Shading Model) 表达式向材质添加不同着色模型时,若选择了 材质输入(Material Inputs)材质属性(Material Attributes) 节点,这些着色模型就会列示在 细节(Details) 面板中的 已用着色模型(Used Shading Models) 旁。

Mat_UsedShadingModels.png

此例显示使用着色模型(Shading Model)节点在此材质中设置了三个着色模型。

切记:由于 切换(Switch) 节点可用于删除图表中的所有部分(包括着色模型),因此此列表仅显示材质图表中设置的着色模型,并不表示实际编译的内容。例如,参阅下面的材质切换节点 部分。

混合材质属性

使用材质属性工作流程时,可使用自定义混合操作进行着色模型参数输入,其余材质属性参数则正常进行混合。

使用 着色模型(Shading Model) 节点从 细节(Details) 面板选择着色模型,然后使用 BlendMaterialAttributes 节点将两者混合。

BlendMaterialAttributes_Diagram.png

若透明度小于0.5f,着色模型 透明度(Alpha) 输入选择 A;若大于等于0.5f,则选择 B

此例中,材质图表显示使用 SetMaterialAttributes 节点设置两个单独的材质。这些材质使用碳纤维纹理,且图表顶部部分使用 默认光照(Default Lit) 着色模型。图表底部部分使用 透明涂层(Clear Coat) 着色模型。BlendMaterialAttributes 节点将这两种不同的着色模型混合起来,并将 透明度(Alpha) 输入参数作为合并材质上的遮罩。

点击查看大图。

材质应用于静态网格体时,此材质插槽仅使用单个(而非两个)绘制调用渲染这两个着色模型。应用透明度遮罩后,可看到左上角使用带双重法线的 透明涂层(Clear Coat) 着色模型,而右上角使用 默认光照(Default Lit)

BlendMaterialAttributes_Result.png

If语句

If 语句可用于 AB 的浮点值,以设置使用的 着色模型,如下例所示。

PerPixel_If_Graph.png

默认情况下,若未设置 B 值,默认值为 0。可在 细节(Details) 面板中设置硬编码值,使用从纹理或常量派生的另一个浮点值;或者为 B 输入设置参数,以便在材质实例中对其进行控制。

在下面的比较中,If表达式根据 AB 的值,以将阴影模型设置为 默认光照透明涂层。如果 A 的浮点值大于 B,使用 默认光照(Default Lit),如果 A 小于 B,使用 透明涂层(Clear Coat)

A > B:使用默认光照 | B = 0.0

A <= B:使用透明涂层 | B = 0.5

Switch节点

使用下述可用 Switch 节点控制材质的功能和质量。

Mat_Switches.png

  • 着色路径切换(Shading Path Switch)可指定用于渲染路径的材质逻辑部分。

  • 在使用引擎质量水平控制材质逻辑时,质量切换(Quality Switch) 十分适用。

  • 在设置材质用于不同设备时,特征等级切换(Feature Level Switch) 十分适用。

  • 静态切换(Static Switch)静态切换参数(Static Switch Parameter) 可在基本材质中排除材质的整个分支,或通过材质实例进行控制。

在下面的图表和对比中,若设为 True静态切换(Static Switch) 表达式将着色模型设为 默认光照(Default Lit),若设为 False,则设置为 透明涂层(Clear Coat)

点击查看大图。

Static Switch = True | 默认光照着色模型

Static Switch = False | 透明涂层着色模型

材质实例化

完全支持材质实例化,以便在材质图表中设置和使用逻辑,以驱动参数和变量来设置要使用的材质模型。

切记,材质实例着色模型显示为 基于材质表达式(From Material Expression),并可被覆盖为静态着色模型。但不可将材质实例着色模型覆盖为 基于材质表达式(From Material Expression),此覆盖将无征兆地失败且不产生任何作用。

其他信息

  • 着色模型输入始终显示为启用(Shading Model Input Always Shown Enabled)

    • 启用 使用材质属性(Use Material Attributes) 并使用Set、Get、Make或Break Material Attributes节点时,即使 基于材质表达式(From Material Expression) 未设为所选着色模型,着色模型 输入仍始终显示为启用(不显示为灰色)。除非 基于材质表达式(From Material Expression) 设为材质的着色模型,否则引脚不执行任何操作。这不影响默认的主材质输入节点。

  • 材质实例覆盖(Material Instance Overrides)

    • 可正常覆盖材质实例的 着色模型,但将着色模型设置为 基于材质表达式(From Material Expression) 会无征兆地失败且不产生任何影响,除非父材质使用着色模型。

  • 无光照着色模型

    • 里面有许多编译好的信息,这意味着不引入回归,就无法正确支持着色路径。

标签
Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见