TATIKUNLOG.

主にゲーム作りについて書き留めるブログ。

Universal Render Pipeline AssetのShadowsの設定について調べる【Unity】



PR

Universal Render Pipeline AssetのShadowsの項目について調べたことをメモしておきます。

※この記事ではShadow cascades(カスケードシャドウ)やShadow acne(シャドウアクネ)については詳しくは説明しません。

環境

Unity 2021.2.3f1

Universal RP 12.1.1

設定項目

f:id:tat1kun:20211121150227j:plain

Max Distance

影を描画するカメラからの距離を設定します。この値より遠い場所では影を描画しません。

単位はメートルです(Unityは1単位1メートルで定めているようです)。

f:id:tat1kun:20211121135143j:plain:h300 f:id:tat1kun:20211121135145j:plain:h300
MaxDistanceを小さくすると、遠くの影が描画されなくなっているのが確認できます

Shadow cascadesの設定

Directional Lightにのみ適用されるShadow cascadesの設定項目です。

簡単に言うと、距離別に詳細度の異なる影を描画する処理の設定です。

Working Unit

Shadow cascadesにおいて そのレベル毎の閾値を「メートル」「MaxDistanceに対する割合(パーセント)」のどちらで設定するかを選択します。

f:id:tat1kun:20211121142648j:plain f:id:tat1kun:20211121142651j:plain
メートルとパーセントの相互変換

Cascade Count

Shadow cascadesを何段階にするかを設定します。1から4の間で設定できます。

SplitとLast Boarder

Shadow cascadesの詳細度を、どの程度の距離で分割するかを設定しますs。

下の色で領域分割されている設定の方はそのレベルの領域範囲の値で、 上のスライドバーそこまでの合計値で表記されているので、そこの差がちょっと分かりにくいかもしれません。

Lastboarder最後のSplitからMaxDistanceまでの間で影がフェードアウトする開始地点を設定します。 Lastboarderだけ設定の基準が異なる点に注意する必要があります。

例えば、上図のパーセント表示におけるLast Boarderのスライダーの79.9999は3の領域における80%を占めていることを指しています。 下の色分けの領域の方では40.0%という表記ですが、これは全体に対する値で、3の領域が全体の50%を占めていて、その内の80%であることによります。

Shadow acne対策用設定

シャドウのトラブルシューティング - Unity マニュアル

Shadow acneという変な影の模様が出るのを防ぐためのバイアスの設定です。

Depth Bias

シャドウマップの深度に対してバイアスをかける量を設定します。 値を大きくしすぎると影が物体から離れてしまうピーターパン現象が発生します。

f:id:tat1kun:20211121131241j:plain:h200f:id:tat1kun:20211121131236j:plain:h200f:id:tat1kun:20211121131239j:plain:h200
深度バイアスによる影の離れ方の比較

Normal Bias

シャドウマップのピクセルの法線方向に対するバイアスをかける量を設定します。 法線方向へピクセルをずらすので、値を大きくし過ぎると影が変形してしまいます。

f:id:tat1kun:20211121131539j:plain:h200f:id:tat1kun:20211121131541j:plain:h200f:id:tat1kun:20211121131544j:plain:h200
法線バイアスによる影の形の変化


それぞれのバイアスを変化させた際のシャドウマップの変化をFrame Debuggerで確認してみました。

f:id:tat1kun:20211121131836g:plain
バイアスを変化させた際の光源視点の深度情報の変化の観察

Soft Shadows

f:id:tat1kun:20211121134405j:plain f:id:tat1kun:20211121134409j:plain
Soft Shadowsのオンオフ比較

影に対してぼかしをかけて柔らかい感じの表現にするかを設定します。 ドキュメント曰く、パフォーマンスにそこそこ影響が出るみたいです(ぼかすためにフィルターをかけるので、確かに重たそうではあります)。

参考

シャドウカスケード - Unity マニュアル

ライトマップの基礎知識 #1 : リアルタイムライト | Unite Now 2020 - YouTube

Universal Render Pipeline Asset | Universal RP | 12.1.1

Shadow Acne