【Unity】ShaderGraphでCustom functionを使用して自作ノードを作成する

はじめに

今回はCustom functionを使用して自作ノードを作成していきます。

環境は Unity 2019.3.0f3

Universal Render Pipeline(テンプレートのプロジェクトです)

UnlitGraph を使用しています。

Custom functionでノードを自作するメリット

Custom functionを使用することで通常のノードだけでは出来ないところに手が届きます。 たとえばforループ処理が使えたりUnityが用意している組み込み関数が使用できます

入力出力の設定

歯車マークをクリックすることでノード情報を開くことが出来ます。 あとはInputsOutputsの+をクリックすれば入力出力の設定ができます。

処理の作成

TypeをStringにすることで直接処理を書くことが出来ます。

Nameはとりあえず適当に指定すればOK

適当に処理を書いてみました。

処理の内容はInputで受け取った値を5回足した数字を返しています。

Outputsに設定した変数は必ずなにかしらの値を代入しないといけないです。 でないとエラーが出ます。

注意点

組み込み関数を使用するならここに書いてある通り

https://forum.unity.com/threads/lwrp-custom-function-with-tex2dlod.674674/

これを使用するといいっぽいです

https://github.com/Unity-Technologies/ScriptableRenderPipeline/blob/master/com.unity.render-pipelines.core/ShaderLibrary/API/D3D11.hlslgithub.com

おわりに

Custom functionを使用することで通常のノードは出来ない処理を書くことが出来ました。

ShaderGraphに直接コードが書けるのがとても便利に感じましたがUnDoが効かない等、不便な所もあるので今後に期待したいです。

参考

blog.unity.com

Custom functionを使用した記事

bravememo.hatenablog.com

bravememo.hatenablog.com