NovaShader – Distortionシェーダーの導入方法・使い方について解説

この記事では、NovaShaderのDistortionシェーダー機能について解説していきます。

Distortionシェーダーを使うと、背景の景色に歪み(distortion)を加えることができます。

実際のエフェクトでは「風圧、熱波、衝撃波」など、透明な気体を表現する時によく利用します。
使いこなせるようになると表現の幅がぐんと広がるので、ぜひマスターしてみてください。

NovaShader公式ドキュメントもあわせてご確認ください。

設定手順

まず、Unityで動作させるために初期設定をしていきます。

やり方はシンプルで、Distortionシェーダー専用のRenderFeatureを登録するだけで使えるようになります。手順は以下の通りです。

1. Universal Renderer Data を開く

Universal Renderer Dataは、初期設定の場合「Assets/Settings」にあります。
このプロジェクトでは「URP-High Fidelity-Renderer」を使用しています。

2. 「Add Renderer Feature」ボタンを押す

3. 「Screen Space Distortion」を選択して追加

もしNovaShader導入が済んでいない場合、オプションは表示されないので注意です。

なお、Universal Renderer Dataは、グラフィック品質ごとに「URP-Balanced、URP-HighFidelity、URP-Performant」の3種類の設定ファイルがあらかじめ用意されています。

どの品質を使用しているかは「Edit > ProjectSettings > Graphics > Scriptable Render Pipeline Settings」を確認してください。

動作確認

ここからは、実際に正しく動作するか検証していきたいと思います。
すべての手順を書くと煩雑になるので、大事なポイントだけお伝えします。

1. 検証用のオブジェクト用意

2. Distortionシェーダー適用

新規にマテリアルを作成し、Shader設定のドロップダウンメニューから「Nova/Particles/Distortion」を選択。

3. sRGB(ColorTexture)の変更

こちらのテクスチャ素材をダウンロードして、Import Settingsを開く。
UVテクスチャは、色情報ではなく数値として取り扱うのでsRGB(ColorTexture)のチェックは外す。

4. UVテクスチャを適用

Distortionシェーダーのテクスチャ設定部分に、UVテクスチャ素材をセットして完了。

シェーダーの仕様

最後におまけとして、NovaShaderがどのようにUVテクスチャの数値を扱っているのか、解説していきたいと思います。
これらの決まりごとはNovaShaderに限らず、自作のShaderにも応用できる考え方なので、ぜひご覧ください。

1. どうやって歪ませているのか?

NovaShaderでは、RGBAチャンネルのうち2種類の指定したチャンネル値を使い、256段階で歪みの強度を表現しています。
特に理由がない限りは、R(赤)とG(緑)を使うため、大体のUVテクスチャは黄緑色になります。

2. グレーが基準色

NovaShaderではRGBAいずれも128を基準として、基準値から離れるほど強く歪みます。

下記のカラー情報では、基準値から変化がないため歪むことはありません。
例)RGBA(128, 128, 0, 255)

UVテクスチャの中に、歪ませたくない領域を作りたい場合は128を設定します。