使用環境を以下に示します。
- Unity 2021.2.7f1
- Windows 10(21H2)
基本的にWindows 10で検証していますが、macOSでも利用できますのでご安心ください。
目次
Master StackとMaster Node
Shader Graph 8.xにおいて最終出力を決定していたのはMaster Nodeと呼ばれるノードでした。以下はUnity 2019.4.8f1のShader Graph 7.3.1におけるURPのPBR Master NodeグラフとUnlit Master Nodeグラフの例です。


このMaster Nodeによる方式にはいくつかの問題がありました。
- レンダーパイプラインにおける頂点シェーダーとフラグメントシェーダーが一つにまとめられているため、そこに繋げるノードが混雑した状態になりがちだった
- 出力ターゲットが固定化されているため、URPとHDRPと言ったレンダーパイプライン間で共通に使えるシェーダーを作成することができなかった
そこでこれらの問題点を解決するために、Shader Graph 9.0からはMaster Nodeから Master Stackに変わりました。以下はUnity 2020.3.23f1のShader Graph 10.7.0において、ProjectビューのCreateメニューで作成できるURPのLit Shader GraphとUnlit Shader Graphの例です。



まずレンダーパイプラインのステージに合わせてVertex(頂点シェーダー)とFragment(フラグメントシェーダー)にノードが別れました。これによりShader Labで記述するシェーダーに近い形で書けるようになりました。

また一見するとLitとUnlitではMaster Stackが異なるように見えますが、それぞれのStackにノードを追加することでカスタマイズができます。そのため、メニューから生成できるLit Shader GraphとUnlit Shader Graphは標準的な出力の例であって、必要に応じて自由にカスタマイズできるようになっています。

ターゲットセッティング
さらにShader Graph 9.0ではターゲットセッティングでどのレンダーパイプライン向けのシェーダーを選択できるようになりました。ターゲットセッティングはGraph Inspectorで行います。
デフォルトは使用しているレンダーパイプラインのみですが、URPとHDRPのパッケージを同時にインポートすることでURPとHDRPの両方に対応したShader Graphを作ることができます。図はURPのプロジェクトにHDRPパッケージをインポートし、Hair Shader Graphを作成したときのGraph Inspectorの表示です。

各ターゲットに関する設定もGraph Inspectorで行います。

またレンダーパイプラインによっては使えるノードと使えないノードがあります。それらを含む場合はグレー表示となり視覚的に確認できるようになっています。
Built-inレンダーパイプラインでもShader Graphが利用可能
Shader Graph 12.0からBuilt-inレンダーパイプラインでもShader Graphが利用できるようになりました。本記事を執筆している時点において、Unity 2021.2.7f1のShader Graph 12.1.2がリリースバージョンとして利用できます。
なお、URPやHDRPでは新規にプロジェクトを作成するとShader Graphパッケージも同時にインストールされますが、Built-inレンダーパイプラインにおいては手動でパッケージマネージャからインストールする必要があります。

これでBuilt-inレンダーパイプラインのShader Graphでシェーダーを作成することで、将来URPやHDRPに移行時にカスタムシェーダーの移行の手間が減ることが期待できます。
おわりに
Shader GraphがBuilt-inレンダーパイプラインにも対応したことでシェーダープログラミングがかなり身近になったと思います。とは言え「そもそもシェーダーとは何だろうか?」と言う疑問もあると思います。ネットに色々と情報がありますし、ご自分の合った勉強法があるかと思いますが、筆者としてはまずはこちらの動画をお勧めしたいと思います。
シェーダーの概要 – Unity Learning Materials
https://learning.unity3d.jp/tag/shader/
この動画をご覧になり、その上で自分に不足している知識を補うために書籍なり動画なりブログなりを調べて実際に動かしながら勉強をするという方法が良いと思います。
このブログでは今後も様々なUnityの機能について情報を発信していく予定ですのでご期待ください。