精度モード
説明

Shader Graph では、異なるプラットフォームにわたって最適化するために、特定のデータ精度のモードに設定できます。グラフ全体の Precision (精度) を設定するには、左上の角にある Graph Settings ボタンから Graph Settings メニューを表示してください。または、各ノードの歯車型アイコンのメニューを使用してグラフ上の各ノードの精度を個々に設定してください。
Precision のオプションに関する詳細は Precision タイプ を参照してください。
メニューオプション
| 名前 | 説明 |
|---|---|
| Float | 精度モードを float に設定します。 |
| Half | 精度モードを Half に設定します。 |
| Inherit | 精度モードを Inherit に設定します。後述の Precision の継承 の項をご覧ください。ノードにのみ使用可能です。 |
精度モードの使用
精度の視覚化
グラフ上のデータの精度を視覚化するには、Shader Graph ウィンドウの右上にある Color Mode を使用します。Color Mode を Precision に設定すると、現在の評価で各ノードが Half と Float のどちらを使用しているかが視覚化されます。

グラフの精度
グラフ全体の Precision (精度) を Float または Half に設定するには、Shader Graph ウィンドウ の左上にあるドロップダウンメニューを使用してください。新規作成されたノードには、このドロップダウンメニューで設定された精度がデフォルトで使用されます。
ノードの精度
ノード毎に精度を設定するには、各ノードの歯車型アイコンメニューを使用します。各ノードに設定した精度を基に、精度のタイプはグラフ内のデータの流れに沿ってアップキャスト/ダウンキャストされます。
例えば、Half ノードを Float ノードに接続すると、データは Float にアップキャストされます。その後、この Float ノードを別の Half ノードに接続すると、データが Half にダウンキャストされます。

精度の継承
ノードには Inherit (継承) と呼ばれる Precision (精度) のオプションがあり、これを使用しているノードは、そのノードに入ってくるエッジの精度モードを継承します。グラフに追加したノードは全てデフォルトでこの Inherit モードを使用します。入力ポートへのエッジ接続がないノードに Inherit オプションを設定すると、そのノードは Graph Precision の設定を使用します。
例えば、Node A に Inherit を設定すると、その継承モードは Half になります。これは、Graph Precision が Half になっているからです。

ノードは精度を各入力ポートから読み取ります。ひとつのノードの入力ポートに、異なる精度モードを使用している複数のノードを接続することも可能です。この場合、結果は、接続されたノードの中で最も高精度のモードで出力されます。
例えば、Node D に Inherit を設定します。Node B は入力ポート A に 精度 Half を渡します。Node C は入力ポート B に 精度 Float を渡します。したがって Node D は、Node D の入力ポートの中で最も高い精度モードである Float を出力します。

入力ポートを持たないノードの場合も、精度モードを使用した設定が可能です。ほとんどの場合これは Input ノード です。Input ノードはデフォルトでは Inherit に設定されており、Graph Precision を使用するようになっています。他のノードと同様に、各入力ノードの歯車型アイコンメニューから手動でグラフの入力データの精度を設定できます。

入力ポートへの接続を持たないノードに Inherit を設定すると、そのノードはGraph Precision の設定を使用します。Graph Precision のモードを変更すると、ノードの精度も変わります。Inherit に設定されたノードは、Graph Precision を変更した時にデータ変換のボトルネックを発生させる場合があるため、把握しておくことが重要です。
例えば、Graph Precision を Half から Float に変更し、かつ手動で Node B を Half に設定した場合、Node B へのデータ入力は Float から Half に変更され、その後 Node D で再び Float に変換されます。

Sub Graph の精度
Sub Graph 内におけるグラフとノードの精度の動作は、通常のグラフ内と同様です。Graph Precision の設定には左上にある同じドロップダウンメニューを使用し、Sub Graph 内の個々の Node Precision の設定には各ノードの歯車型アイコンメニューを使用してください。
Sub Graph Output の精度を Output ノードに設定します。Sub Graph の Output ノードの全ての出力ポートに、この精度が適用されます。

Sub Graph Input の場合は、Graph Inspector から個々の プロパティー に精度モードを設定します。Inherit に設定されているプロパティーは、ウィンドウ左上のドロップダウンメニューで Sub Graph に設定された Graph Precision を継承します。

メイングラフ内で Sub Graph ノード を使用する場合、Sub Graph が独自にその精度を決定します。Sub Graph の Blackboard の入力プロパティーの精度モードは、Sub Graph アセットに設定された Sub Graph Precision を継承します。Sub Graph の出力は Output ノードの精度を使用します。Shader Graph 内で Sub Graph ノード の精度を変更することはできません。
例えば、Sub Graph Precision を Half に設定し、Graph Precision を Float に設定します。その上で Input A と Output ノードの両方を Inherit に設定します。Sub Graph の入力ポートと出力ポートは、Graph Precision が float に設定されていたとしても Sub Graph Precision から Half を継承します。Sub Graph の Inherit 動作をメイングラフのそれと一致させたい場合は、Sub Graph Precision も Float に設定する必要があります。
