docs.unity3d.com
    目次を表示する/隠す

    精度モード

    説明

    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 に設定する必要があります。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)