精度模式
描述
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
。