LOD Group のクロスフェードを使用する

高橋 啓治郎 -

Unity 5 の LOD Group には、LOD の各レベル間をクロスフェードで滑らかに繋ぐための機能が用意されています。ただし、この機能を使用したシェーダーはシェーダーは標準では提供されていないため、カスタムシェーダーを用意する必要があります。

この、LOD クロスフェードを行うカスタムシェーダーのサンプルを用意しました。

https://github.com/keijiro/CrossFadingLod

アルファブレンドを使用したバージョンディザを使用したバージョンがあります。例としては前者の方がシンプルで分かりやすいです。後者は Unity 側で用意されている補助マクロを使用して実装しています。

ポイントとなるのは下記の2点です。

  • Unity 側から提供される uniform 変数 unity_LODFade の x 値をクロスフェード値として適用する。
  • シェーダーキーワード "LOD_FADE_CROSSFADE" でマルチコンパイルを行っておく。

2点めは少し分かりにくいかもしれません。LOD Group はクロスフェードの必要な場合にキーワード LOD_FADE_CROSSFADE を有効にしますが、unity_LODFade に値が設定されるのは、このキーワードが有効な間に限られます。LOD_FADE_CROSSFADE が無効な間に unity_LODFade の値を拾ってしまうと、おかしな描画が生じてしまうことになります。そのため、マルチコンパイルが必須になります。

また、LOD Group 側で Fade Transition Width の設定を行っておくのも忘れないようにしましょう。

他にご質問がございましたら、リクエストを送信してください

0 コメント

ログインしてコメントを残してください。
Powered by Zendesk