シェーダーグラフ( Shader Graph )が、Unity内部でのシェーダー作成における標準ツールとなってしばらく経ちますが、依然として改良改善が続けられており、どんどんと良いツールになってきています。
そんなシェーダーグラフにUnity 2021.2で新たな機能が追加されましたが、これがまた良いです!
詳しくはコチラの記事を見てください。本記事ではそれぞれの項目について軽く触れて、紹介する程度にしたいと思います。Unity公式ブログはあまり読めてなかったのですが、有益な情報が多くてもっと読まないとなぁと思いました。
サーフェイス・オプションの表示
これは一言で言うと、シェーダーの基本設定をマテリアルのインスペクターに表示する、というものです。
URPに用意されている標準のLitシェーダーには設定が表示されますが、シェーダーグラフから作ったマテリアルにはこれまで表示されていなかったので、ようやく!という機能です。
グラフ設定のAllow Material Overrideという項目をチェックすると、インスペクター上に表示されるようになります。(直訳すると『マテリアルのオーバーライドを許可』というお堅い感じですが、要するにインスペクター上に表示する、ということなので少し分かりにくい!)
これにより、ひとつのシェーダーグラフから作られた複数のマテリアル間で、これらの基本設定を異なるものとすることが可能となります。
カスタム・インターポレーター
カタカナだとワケわからん!Interpolatorつまり、Interpolation(補間、内挿)ということなのですが、この新機能によってFragmentステージにおける処理をVertexステージに移行させることが出来るようになりました。
レンダリングの処理にはいくつか段階があり、特に大事な部分なのがVertex shaderとFragment Shader( Pixel Shader )で、シェーダーを書くというのは特にこの2つの部分についてコードを書くということなのですが、Vertexの方が処理が軽いとされます。
Vertexつまり、頂点というのは、その3Dモデルが持つ離散的な情報であり、Vertexシェーダーで頂点単位で計算したものをFragmentシェーダーに移動させて、補間で離散的な計算結果を繋ぎ合わせる、ということでインターポレーターということなのだと思います。
まだ試せてもいない機能ですが、上手く使えばシェーダー処理の負荷を下げられるということで、これも活用できるようになりたい機能です。
黒板にカテゴリーを追加!
これもいよいよ!という機能ですが、プロパティ群を『カテゴリー』でグルーピング、整理することが可能となりました。
黒板というのはBlackBoardつまり、シェーダーグラフ上でのプロパティ表示欄のことですが、ここから『カテゴリー』を追加でき、各プロパティをそれぞれカテゴリー内に格納することが出来ます。
これで、マテリアルのインスペクター上でカテゴリー名がヘッダーとして表示され、プロパティが開け閉めできるようになり、見易く分かりやすくなります。
まとめ
というわけで、シェーダーグラフの新機能を公式ブログに全乗っかりする形で、簡単にまとめてみました。
自分自身、それなりにシェーダーに対する知識が付き始めたのもあり、シェーダーグラフが使いやすく、そして出来ることが増えるのは本当に嬉しいです。