はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】ShaderGraphでフラグによって入力を切り替える(Branchノード)

はじめに

今回はShaderGraphでフラグを使って入力を切り替えてみる記事になります!

f:id:hanaaaaaachiru:20191218193013p:plain

フラグ、いわゆるtruefalseで入力を切り替えたりできるノードというわけです。

またプロパティにしてインスペクターからいじれるようにしたら、結構便利かもしれません。

早速みていきましょう。

Branchノード

名前 入出力 タイプ 意味
Predicate 入力 Boolean フラグ
True 入力 Dynamic Vector trueのときの値
False 入力 Dynamic Vector falseのときの値
Out 出力 Boolean 出力値

Branch Node | Shader Graph | 7.1.6

仕組みは結構分かりやすいのではないでしょか。

f:id:hanaaaaaachiru:20191218195740p:plain

f:id:hanaaaaaachiru:20191218195803p:plain

サンプル

先程の色を変える奴をインスペクターからもいじれるように変更しましょう。

まずは以下のようなノードを組んでみてください。
f:id:hanaaaaaachiru:20191218200054p:plain

そしたら、Booleanノードを左クリックし、Convert to Propertyを選択してインスペクターにも表示できるようにします。

f:id:hanaaaaaachiru:20191218200222p:plain

適当なマテリアルにシェーダーを設定して、ゲームオブジェクトにアタッチすると…

f:id:hanaaaaaachiru:20191218200620p:plain

さいごに

ただ公式ドキュメントに

Both sides of the branch will be calculated in the shader, even if one is never output.

と書かれているので、選択されていない方の入力も一応計算はされています。

パフォーマンス的にも頭の片隅においておいた方が良いでしょう。