この記事はUnity Advent Calendar 2022-3の25日目の記事です。
はじめに
Unityのバージョン2022.2から完全にノンコードでポストエフェクトを実装できるようになったので触ってみました。
Unity公式が設定方法の動画を出してくれています。
以前はスクリプトで ScriptableRendererFeatureクラスを継承したクラスを書いて.. などをやらないとできませんでした。独自のポストエフェクトを入れたいけどコーディングはしたくない方も多いと思うので かなり嬉しいアップデートですね。
環境
Unity 2022.2.1f1
Universal RP 14.0.4
設定
以下はURPでの設定方法です。HDRPでの方法は少し違いますが上記のUnity公式動画で解説されています。
- ポストエフェクト本体となるシェーダーグラフを作ります
- Render Pipeline Asset にポストエフェクト用の Renderer Feature を追加します
- 1で作ったシェーダーグラフのデフォルトマテリアルを 2の Render Feature 内の Pass Material に設定
これで1で作ったシェーダーグラフを編集すればポストエフェクトとして画面に適用されます。
ポストエフェクト
アドベントカレンダーの記事だし、雪でも降らせてみます。
画面を格子状に分けて
格子状に分けた中のランダムな位置に点が表示されるようにし、その点を時間変化で動かして
元の画面と合成
雪が降った!
え?これポストエフェクトでやる意味あるの?
気にしない気にしない!ほら、ポストエフェクトなら粒を何万個出しても負荷が一定だからどこかで使える かも!
ついでにこちらを参考に 結露した窓を落ちる水滴 もシェーダーグラフで追加
ここまでノードが増えるとシェーダーグラフのエディタがかなり重くなるのでファイル分けた方がよさそうです。
ひとつの計算結果をいろいろなノードで使い回すような時にノードが綺麗に配置できないのが悩ましかったのですが、いい方法ご存じの方がいれば教えてください!