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になりがちになることがまぁまぁあるのでこういったちょっとしたかゆいところに手が届かん...みたいなときに何すれば良いのか知っておくといろいろできそうですね。