Shader Graph 10.0.x へのアップグレード
Master Stack によるグラフ出力
Shader Graph バージョン 10.0 では、Master Node (マスターノード) が廃止され、グラフの出力定義用に、より柔軟な Master Stack (マスタースタック) というソリューションが導入されました。以前のバージョンの Shader Graph で作成されたグラフは全てバージョン 10.0 でも開くことができ、バージョン 10.0 に自動的にアップグレードされます。以下に、想定される動作および、手動でのアップグレードに関するヒントを掲載します。
1 つの Master Node から Master Stack への自動アップグレード
グラフに Master Node が 1 つしかない場合は、その Master Node からの全てのデータが Master Stack 出力に自動的にアップグレードされます。想定される動作は次の通りです。 Graph Inspector の Graph Settings タブに正しい Targets (ターゲット) が加えられ、Master Node 歯車型メニュー内で Surface のオプションを表す全ての設定が Master Node から Target Settings へコピーされます。 Master Node上に存在したポート毎に、Master Stack に Block (ブロック) ノードが追加されます。Master Node のポートに接続された全てのノードは、対応する Block ノードに接続されます。 Master Node のポートのデフォルト値入力フィールドに入力された値は全て、対応するBlock ノードにコピーされます。 アップグレード後の最終的なシェーダーの見た目はアップグレード前と全く同じになります。
複数の Master Node から Master Stack への自動アップグレード
グラフに 2 つ以上の Master Nodeがある場合は、上で説明したこと全てが、現在選択中のアクティブな Master Node に適用されます。
グラフ内に存在する非アクティブな Master Node は全て、Master Stack 形式にアップグレードされるとグラフから削除されます。このデータは失われる可能性があります。複数の Master Node を含むグラフをアップグレードする際は、Master Node のポート、接続されたノード、非アクティブな Master Node の歯車型メニュー内の非デフォルトの設定全てを、記録しておくことをお勧めします。
アップグレード後に、必要な Block ノードで欠如しているものを追加し、ノードを Master Stack に接続し直します。非アクティブな Master Node の歯車型メニュー内の設定は、Graph Inspector の Graph Settings タブから、対応するターゲット設定に手動で入力する必要があります。
複数パイプライン対応の Master Node から Master Stack への自動アップグレード
グラフ内に、ユニバーサルレンダーパイプラインと HD レンダーパイプラインの両方に対応する PBR または Unlit の Master Node が含まれる場合、これらは、プロジェクト内で現在使用可能になっているパイプラインに応じて、自動的にMaster Stack にアップグレードされます。
ユニバーサルレンダーパイプラインの場合、PBR と Unlit の Master Node の全ての設定は、ユニバーサルレンダーパイプラインの Lit および Unlit のターゲットと同じになります。想定される動作に関しては上記を参照してください。
HD レンダーパイプラインの場合、PBR および Unlit の Master Node の設定は、HD レンダーパイプラインの Lit および Unlit のターゲットと同じにはなりません。このため、PBR あるいは Unlit の Master Node から Lit および Unlit の Master Stack へアップグレードすると、想定外の動作が発生する場合があります。最終的なシェーダーの見た目がアップグレード前とは変わる可能性があります。アップグレード関連の問題は、バグ報告機能からご報告ください。ただし一部のアップグレードパスでは、自動化された迅速なソリューションがなく、手動での調整が必要になる場合があるので注意してください。
“View Generated Shader” の移動
以前は、Master Node を右クリックしてコンテキストメニューから “View Generated Shader” を選択することで、生成されたシェーダーをプレビューできました。 バージョン 10.0 では、Unity の Inspector 内で、Shader Graph アセットに “View Generated Shader” ボタンが表示されます。
Graph Inspector 内の設定
Shader Graph バージョン 10.0 では、Graph Inspector が導入されました。これは、グラフ内の選択されたオブジェクトに関連する設定を表示するフローティングウィンドウです。
Graph Settings
グラフの全体設定には、Graph Inspector の Graph Settings タブからアクセスできるようになりました。 Shader Graph ツールバーにあった Precision のトグルは、Graph Settings タブからアクセス可能になっています。 データは一切変更されていませんので、グラフの以前の Precision 設定はそのままになります。
Master Node の歯車型メニュー内の Surface オプションに関わる全ての設定は、Graph Inspector の Graph Settings タブからターゲットごとにアクセス可能になっています。このデータの自動アップグレードに関する詳細は、上記を参照してください。
Property Settings
プロパティーの設定は、Blackboard の折り畳み表示から Graph Inspector に移動されました。Blackboard の複数のプロパティーを同時に選択して Graph Inspector から編集することができます。 データは一切変更されていませんので、グラフのプロパティーに以前加えられた設定はそのままになります。
ノードごとの設定
歯車型サブメニューから行われていたノードごとの設定は全て Graph Inspector からアクセス可能になっています。 データは一切変更されていませんので、グラフのノードに以前加えられた設定 (Precision の設定、Custom Function ノードの設定など) は全てそのままになります。
Master Node に含まれていた、Surface のオプションを定義する全ての設定は、Graph Inspector の Graph Settings タブに含まれています。詳細は上記を参照してください。
Custom Function ノードと Shader Graph Preview
Custom Function ノードに関しては、グラフ内プレビューのレンダリングに際して Keyword (キーワード) の使用が必要になる場合があります。これはプレビューシェーダーのコンパイルエラーを回避するためです。
#if SHADERGAPH_PREVIEW
を使用したカスタム製の Shader Graph Preview コードを持つ Custom Function ノードがある場合は、それを以下のように #ifdef
宣言にアップグレードする必要があります。
# ifdef SHADERGAPH_PREVIEW
Out = 1;
# else
Out = MainLight;
# endif