夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

ShaderGraphでSubGraphの機能を使用する

本日はShaderGraph勉強枠です。

SubGraphの機能に関して勉強しました。

〇SubGraphとは?

ShaderGraphでShaderを開発する際にノードが複雑になり可読性が低下する場合があります。

f:id:Holomoto-Sumire:20211008211047p:plain

また、よく使用するノードの集まり(処理)がある場合まとめておきたいという場合があります。 このようなよく使用するノードの集まりなどを格納する仕組みとして[SubGraph]があります。

[SubGraph]を使用することで可読性を上げるほかオリジナルのノードを作成することができます。

〇CustomFanctionとSubGraph

オリジナルのノードを作成する仕組みとして[CustomFanction]ノードがあります。

redhologerbera.hatenablog.com

[CustomFanction]ノードもまたオリジナルの処理をノードとして登録する機能です。

f:id:Holomoto-Sumire:20211008211610p:plain

[CustomFanction]ノードはHLSLのファイルもしくはノード内でコードを入力することで機能する機能に対し、[SubGraph]は[CustomFanction]ノードを含め複数のノードをひとまとめにできる機能になります。

実際に使用していきます。

〇SubGraphの作成

今回は次のような時間に対して変数を掛け合わせ、アニメーション速度を調整するノード群を使用してみます。

f:id:Holomoto-Sumire:20211008211849p:plain

①Projectウィンドウで右クリック→[Create]→[Shader]→[SubGraph]を選択しSubGraphを作成します。

f:id:Holomoto-Sumire:20211008212012p:plain

今回は[TimeSpeed]という名前で作成しました。

f:id:Holomoto-Sumire:20211008212213p:plain

②[TimeSpeed]をダブルクリックで開きます。

UIなどはShaderGraphと同様になっています。

f:id:Holomoto-Sumire:20211008212257p:plain

③SubGraphとして登録したい処理をノードでつなぎ、[Output]へつなぎます。

f:id:Holomoto-Sumire:20211008221341p:plain

インプットとして入力したい変数はShaderGraph同様[Backboard]で変数として登録します。

f:id:Holomoto-Sumire:20211008221315p:plain

④[SavaAssets]で作成したSubGraphを保存します。

f:id:Holomoto-Sumire:20211008221823p:plain

以上でSubGraphの作成登録が完了しました。

〇SubGraphの使用

次にSubGraphとして作成した[TimeSpeed]を使用します。

①ShaderGraphを開きます。

②[CreateNode]から[TimeSpeed]を検索にかけると作成したノードが出てきます。

f:id:Holomoto-Sumire:20211008222855p:plain

これを[Time]ノードと[Multiply]ノードで掛け合わせていた処理と[TimeSpeed]ノードをつなぎます。

f:id:Holomoto-Sumire:20211008225459p:plain

以上でSubGraphを使用することができました。

今回は2つのノードをひとまとめにしましたが複数のノードをひとまとめにすることで非常に可読性を上げることができそうです。