蒼水家技術録

蒼水が普段制作とか勉強とかして覚えたことを復習としてまとめてるものです。 それが最適解かどうかはわからないけど、何を目的として始めて、何が必要で、実際何をやって、どうなったか、まで全部過程を残すための技術ブログです。

Unity VFX編 #23 自作ShaderGraphとの連携でもFlipBookを使用できるようにする

Shader編の方でFlipBook対応の自作ShaderGraphを作成したのでそれを使用して実際に作成していきます。
前回の記事はこちらからどうぞ。
atelier-aomi.hatenablog.com

Shader編の関連記事はこちらからどうぞ。
atelier-aomi.hatenablog.com

今回の目的

今回はShader編の方でFlipBook対応の自作ShaderGraphを作成したシェーダーを実際にVFXGraphで使用して動くものを確認してみることを目的とします。
合わせてShader側で用意したプロパティとVFXGraph側のアトリビュートの組み合わせ技について理解を深めていきます。

ShaderGraphと連携して各種設定する


ShaderGraphとの連携部分は前回の記事をものを拡張した上画像のような形になります。
Unity6からアトリビュートは左にあるBracoBoardから直接Attributesもドラッグ&ドロップできるようになったのでそれで使用可能です。
それ以前はGet Attribute系のノードで取得できます。

必要なプロパティの取得と設定

今回の自作ShaderGraphで必要になるアトリビュートは「Color」「Alpha」「texIndex」の3種類です。
ColorやAlphaは言わずもがなですがtexIndexについて少し説明します。

texIndexはUpdateParticle内等で使用するFlipBook Playerを介して設定されたものが格納されています。そのためtexIndexアトリビュートを使用するときはセットで使える、と覚えておきましょう。
公式リファレンスはこちら
docs.unity3d.com


各種アトリビュートノードが用意出来たらShaderの対応するソケットに接続します。
ほか、テクスチャやFlipBookSizeもVFXGraph側でプロパティを用意して接続します。これで設定完了です!
ちなみにFlipBookSizeはテクスチャの分割設定なので縦×横のVector2のプロパティとして用意しましょう。

補足:Attributesの挙動について

AttributesノードにはLocation(Current / Source)というものがありますが基本的はCurrentでOKです。
CurrentとSourceの違いはCurrentはそのフレーム時点、つまりそのフレームで各ブロックが処理した後の結果を取得します。
Sourceでは今のフレームではなく該当の粒子の発生初期時点のものを取得します。そのため諸々処理した後の結果が欲しいのでCurrentでOK!ということです。

実際の挙動を確認


実際に動かして挙動を確認すると上動画のように標準のOutput Particle Quadと同じようにFlipBookを自作ShaderGraphを使用できることが確認できました。

おわりに

FlipBookを自作ShaderGraphでも使いたい!となったらVFXGraph側ではなくShaderGraph側で対応すればOK!というお話でした。
なんだかんだエフェクトって特殊な表現したりすることもそこそこあるので独自のShaderになりがちになることがまぁまぁあるのでこういったちょっとしたかゆいところに手が届かん...みたいなときに何すれば良いのか知っておくといろいろできそうですね。

次回記事

atelier-aomi.hatenablog.com

Unity VFX編記事一覧はこちらからどうぞ。
atelier-aomi.hatenablog.com

<PR>