docs.unity3d.com
    显示 / 隐藏目录

    精度模式

    描述

    Shader Graph 能够设置特定的精度数据模式,以便在不同平台上进行优化。使用左上角的 Graph Settings 按钮显示的 Graph Settings 菜单可设置整个图形的精度,也可以通过每个节点上的齿轮图标菜单设置图形上各个节点的精度。

    请参阅精度类型了解有关类型选项的更多信息。

    菜单选项

    名称 描述
    Float 将精度模式设置为 float。
    Half 将精度模式设置为 half。
    Inherit 将精度模式设置为 inherit。
    请参阅下文的精度继承。仅在节点上可用。

    使用精度模式

    可视化精度

    要显示图形中的数据精度,可以使用位于 Shader Graph 窗口右上角的颜色模式 。将 Color Mode 设置为 Precision 以直观地表示每个节点在当前评估中使用的是 half 还是 float 。

    图形精度

    使用 Shader Graph 窗口左上角的下拉菜单可以将整个图形的精度设置为 float 或 half。默认情况下,新创建的节点将使用此下拉菜单中设置的精度。

    节点精度

    要为每个节点设置唯一的精度,请使用其齿轮图标菜单。当数据在图形中流动时,精度类型将基于每个节点上设置的精度自行向上或向下转换。

    例如,如果一个 half 节点连接到一个 float 节点,则数据将向上转换为 float。如果该 float 节点随后连接到另一个 half 节点,则数据将向下转换回 half。

    精度继承

    节点有一个名为 inherit 的精度选项,使其继承任何传入边的精度模式。默认情况下,所有节点在添加到图形时都使用 inherit 模式。对于输入端口没有任何边连接的节点,设置为 inherit 时将使用 Graph Precision 设置。

    例如,如果将节点 A 设置为 inherit,它使用 half 作为其精度模式,因为 Graph Precision 是 half。

    节点从每个输入端口读取精度。您可以将具有不同精度模式的节点连接到单个节点的输入端口。在这种情况下,结果输出是所连接的节点中可用的最高精度模式。

    例如,将节点 D 设置为 inherit。节点 B 通过输入端口 A 传入 half 精度 。节点 C 通过输入端口 B 传入精度 float。节点 D 将输出 float,因为这是节点 D 上所有输入端口中的最高精度模式。

    没有输入端口的节点也可以设置精度模式。此类节点通常是输入节点,默认情况下它们将设置为 inherit 并使用 Graph Precision。与其他节点类似,可使用每个输入节点的齿轮图标菜单手动设置图形输入数据的精度。

    对于输入端口没有任何连接的节点,在设置为 inherit 选项时将使用 Graph Precision 设置。如果更改 Graph Precision 模式,这些节点的精度也会发生变化。对设置为 inherit 的节点进行跟踪很重要,因为在更改 Graph Precision 时,这些节点可能导致转换瓶颈的出现。

    例如,如果 Graph Precision 从 half 更改为 half ,但节点 B 已手动设置为 half,输入节点 B 的数据将从 float 转换为 half,然后在节点 D 上再次转换回 float。

    子图形精度

    在子图形中,图形和节点的精度行为与普通图形中的相同。使用左上角相同的下拉菜单设置 Graph Precision,也可以使用每个节点上的齿轮菜单的 Node Precision 为子图形的每个节点设置精度。

    在 Output 节点上设置 Sub Graph Output 的精度。此精度将应用于子图形的 Output 节点中定义的所有输出端口。

    对于 Sub Graph Inputs,通过 Internal Inspector 为每个单独的属性设置精度模式。使用 inherit 选项的属性将继承子图形上通过左上角下拉菜单设置的 Graph Precision。

    在主图形内使用 Sub-graph 节点时,子图形决定自身的精度。在子图形 Blackboard 中的输入属性中设置的精度模式将继承子图形资源中设置的 Sub Graph Precision。子图形的输出将使用 Output 节点的精度。Sub-graph 节点不能在 Shader Graph 内更改其精度。

    例如,将 Sub Graph Precision 设置为 half,将 Graph Precision 设置为 float。然后,将输入 A 和 Output 节点都设置为 inherit。虽然 Graph Precision 设置为 float,但是子图形的输入和输出端口都将从 Sub Graph Precision 继承 half 。如果想让子图形的 inherit 行为与主图形匹配,必须将 Sub Graph Precision 也设置为 float。

    返回到顶部
    Copyright © 2023 Unity Technologies — 商标和使用条款
    • 法律条款
    • 隐私政策
    • Cookie
    • 不要出售或分享我的个人信息
    • Your Privacy Choices (Cookie Settings)