
アプリケーション用にシーンとキャラクターを作成する時、 視覚的な深度をレンダリングに追加したい場合があります。コンタクト シャドウ は、シャドウイングの近似値がより正確になり、 他のシャドウイング アルゴリズムでは実現不可能な輪郭シャドウの追加が可能になるので、 シーンの視覚的な深度と忠実度を向上させたい場合に最適です。
キャラクターに詳細を追加する
所定のポイントライト のコンタクト シャドウを有効にするユースケースとしては、 キャラクターに追加で LOD をレンダリングすることがあります。以下の画像を見ると、 どのようなコンタクト シャドウをキャラクターに追加できるのかイメージがわくと思います。比較スライダを右から左へ動かすと、コンタクト シャドウをオフにした時に、 コンタクト シャドウがオンのポイントライトの半径内の方のキャラクターには、 追加された詳細が表示されていないことに注目してください。


コンタクト シャドウを有効にすると、 ライトごとにピクセル単位のスクリーン空間アルゴリズムを実行するようにレンダラに指示します。つまり、コンタクト シャドウ アルゴリズムは、 クエリされたピクセルがポイント ライト ソースからオクルードされるかどうかを判断できるように、 シーン深度バッファ光線を進ませて、ライト演算処理パスを実行します。
コンタクト シャドウのあるシーン
コンタクト シャドウを有効にする別のユースケースとしては、1 つのライトのみサポートするマテリアルのピクセル シェーダー内で、 パララックス オクルージョン マッピング シャドウを計算する必要性を取り除くことです。以下の画像で、コンタクト シャドウを有効にした場合と、そうでない場合の、 パララックス オクルージョン マッピング マテリアルが比較できます。

パララックス オクルージョン マッピング マテリアルがピクセル深度オフセットを出力でlきることが重要です。
コンタクト シャドウがパララックス オクルージョン マッピング マテリアルと相互作用している例です。

コンタクト シャドウの長さ = 両ライトとも 0.1
コンタクト シャドウを有効にする
デフォルトで、コンタクト シャドウはポイント ライト上では無効になっているので、ポイント ライトのコンタクト シャドウの長さは 0 に初期化されます。 コンタクト シャドウを有効にするには、以下のステップを実行します。
-
まず、ポイントライト をシーンにドラッグします。
-
次に、拡張の矢印をクリックして、新規作成した Point Light コンポーネントの [Details (詳細)] パネルの [Light] セクションを展開します。
クリックしてフルサイズで表示
-
コンタクト シャドウを有効にするには、[Contact Shadow Length (コンタクト シャドウの長さ)] を 0 より大きい値に設定します。
クリックしてフルサイズで表示
コンタクト シャドウの長さを 0 より大きい値に設定すると、 ピクセルの位置からシーンの深度バッファを通過して光源に向かって光線をトレースするようにレンダラを指示することになります。通常、コンタクト シャドウの長さの最大設定値は 1 です。 1 の場合、光線は画面全体を横切ります。また、0.5 に設定すると、 光線は画面の半分まで横切ります。シーン深度バッファで受け取ったサンプル数は一定なので、 つまり、コンタクト シャドウが長くなるほど、見えるノイズ (アーティファクト) が増えるということに注意してください。基本的に、コンタクト シャドウの長さを 0.75 にすると、0.1 よりノイズが増えます。