前に作ったPBRマテリアルのシェーダーグラフにマインクラフトのエンチャント風のユラユラした効果を重ねがけする作り方をまとめました。
Litシェーダーであればどんなシェーダーグラフにも重ねがけできます。
シンプルでも見栄えするエフェクトなので、色々な場面で使えると思います。
もくじ
事前準備
まずエンチャ風エフェクトをかけたいLitのシェーダーグラフを用意します。
今回は、以前の記事で作ったスタンダードシェーダー風のシェーダーを使います。
追加エフェクトがない素の状態のシェーダーは今後いろいろ使えるので、前回のシェーダーはサブグラフに変換しておきました。
サブグラフからの出力とFragmentの間に追加のエフェクトを作っていくことになります。

必要な素材
ユラユラ効果のためのテクスチャが必要です。今回はこんなテクスチャを用意してみました。

必要なプロパティ
上記のテクスチャに加えて、エフェクトの方向・スピード用のVector2とエフェクトの強度(0~1のFloat)を用意します。

スクリーンに沿ってテクスチャを貼る
一番のポイントは、3Dモデルの表面に沿ってマテリアルを貼るのではなくスクリーンに沿ってテクスチャを貼ることです。これにはScreen Positionノードを使います。
通常、3Dモデルにテクスチャを貼る場合はSample Texture 2DのUVにUVノードを接続します。これで3Dモデルの表面に沿ってテクスチャが貼られます。
UVノードの代わりにScreen Positionノードをつなぐことで、スクリーンに沿ってテクスチャを貼ることができます。

テクスチャのUVスクロール
まずScreen PositionとSample Texture 2DのUVの間にTiling And Offsetノードをつなぎます。
これでテクスチャの位置とタイリングを動かせるようになります。
(今回はタイリングは使いませんでしたが、もしユラユラ効果用のテクスチャのスケールが大きすぎる場合などはタイリングで調整できます)
次にTiling And OffsetノードのOffsetの入力にTimeノードをつなぎます。そのままつなぐと (x, y) = (1, 1)の方向に動いてしまうので、方向とスピード調整用に作ったVector2のAuraDirectionをMultiplyノードで乗算してからつなぎます。

エフェクトは発光する感じにしたいので、サブグラフから出力されたEmissionを加工することになります。
Sample Texture 2Dの出力に強度用のFloatの値(Aura Brightness)を乗算してからサブグラフからのEmissionに加算し、Fragmentにつなぎます。

完成!
こんな感じです!
テクスチャを変えたり色を調節したり、いろいろ工夫ができると思います。
強度調節用の値を動かすことでエフェクトの入り抜きを自然な演出にできるので、スクリプトで値を動かすのもオススメです!





