[Mobility (可動性)] が [Movable (可動)] に設定されているライトは、ランタイム時にあらゆる方法で動的に変更できるライトで、動的ライトとも呼ばれています。 パフォーマンス上の負荷は、Static (静的) または Stationary (固定) ライトよりも高く、ライトの影響を受けるメッシュの数と、これらのメッシュのトライアングル数に応じて異なります。 たとえば、半径が大きいシャドウをキャストする動的ライトは、半径が小さいライトよりもパフォーマンス上の負荷が増大します。
可動ライトを Lumen Global Illumination and Reflections (Lumen グローバル イルミネーションおよび反射) と併用すると、動的な間接ライティングをサポートできます。
選択可能な 3 つのライトの可動性のうち、可動ライトは幅広い品質に対応しており (使用する動的シャドウのタイプに応じて異なる)、可変性が最も高く、パフォーマンス上の負荷も最も大きくなります。
サポートされているシャドウのタイプ
可動ライトは、静的ライトまたは固定ライトよりも動的なライティングおよびシャドウイング手法をサポートしています。 可動ライトでは、次のタイプのシャドウイングがサポートされています。
Shadow Maps (シャドウ マップ) は、シーン全体にわたる動的シャドウを提供します。 シャドウ マップはエンジンのすべての動的シャドウイングに対する標準的なシャドウイング手法で、ほとんどのプラットフォームですべてのライト タイプに対して機能します。 なお、シャドウ マップは、このリストの他の多くのシャドウイング手法のように、ソフト エリア シャドウイングを提供しません。
Virtual Shadow Maps (仮想シャドウ マップ) は、映画品質のアセットや動的にライティングされている大規模なオープン ワールドで適切に機能する、安定した高解像度のシャドウ マップを提供します。 仮想シャドウ マップは、境界がぼんやりとした柔らかい影を提供します。また、Nanite、Lumen の動的グローバル イルミネーションおよび反射、および ワールド パーティション で適切に機能し、最高品質を実現するとともにパフォーマンス上の負荷も適度です。 仮想シャドウ マップは、DirectX 11 または DirectX 12 をサポートする最新のコンソールおよび PC プラットフォームでサポートされています。
Ray Tracing Shadows (レイ トレーシング シャドウ)は、緩やかなエリアライトの効果をシミュレートし、適度なパフォーマンスで最高品質のシャドウイングを実現します。 レイ トレーシング シャドウは、DirectX 12 を搭載した Windows 10 (またはそれ以降) 上で動作する NVIDIA GPU ハードウェアでサポートされているレイ トレーシング アーキテクチャを使用します。
メッシュ距離フィールドからのシャドウは、メッシュの距離フィールド表現に基づいて、メッシュからのライティング エフェクトとソフト エリア シャドウイングを提供します。 この手法では、プロジェクト用の distance field meshes (距離フィールド メッシュ) が必要です。距離フィールド メッシュは、Lumen の動的グローバル イルミネーションおよび反射、および 距離フィールド アンビエント オクルージョン のソフトウェア レイ トレーシングに必要です。
シャドウ バイアス
Unreal Engine のデフォルトのシャドウ マッピング手法は、可動ライトのすべてのプラットフォームで機能し、動的シャドウイングを提供します。 シャドウ マッピングには、カーブしたサーフェス上でのファセット シャドウや、サーフェスの交差部分でのシャドウ コンタクトの強調など、オブジェクトがシーンで浮いていたり、地面についていないように見えるアーティファクトが発生するという制約があります。
シャドウ バイアスは、これらの光源からのセルフシャドウイングおよびコンタクトの強調の精度を向上させると同時に、これらのタイプのアーティファクトを軽減できるライトごとの一連のプロパティです。 これらのバイアス設定は、特定の領域で最適な精度を保ちながら、別の領域ではセルフシャドウイングのアーティファクトを削減できるトレードオフを見出すことで、機能します。
Shadow Slope Bias (シャドウ バイアス傾斜) を調整すると、シャドウの精度が失われたときの自己影付け処理において発生する視覚的なエラー (アーチファクト) が減少します。これにより、シーンで地面に付いているオブジェクトにピーターパン (または浮遊) 現象が生じる可能性があります。 傾斜バイアスを調整することで、動的ライティングに関する自己影付け処理の問題を すべて ではありませんがほとんど解決できます。 プロジェクトで 最適な バランスを探してみてください。
ディレクショナル ライトには追加の深度バイアスのプロパティがあり、カスケード シャドウ マップ (Cascaded Shadow Maps: CSM) 全体のバイアス強度を制御し、 カスケード トランジション ポイントでのシャドウ アーティファクトの不連続性を低減できます。
ライトでは、シャドウ バイアスを調整するために、次のプロパティを使用できます。
| プロパティ | 説明 |
|---|---|
Shadow Cascade Bias Distribution | (ディレクショナル ライトのみ) カスケード シャドウ マップ全体の深度バイアスのスケーリングを制御します。 異なるカスケード トランジション間のシャドウ アーティファクトの違いを軽減することができます。 値が「1」の場合、各カスケードのサイズに基づいてシャドウ バイアスがスケールされます。 値が「0」の場合、すべてのカスケードでシャドウ バイアスが均一にスケールされます。 |
Shadow Bias | この光源からのシーン全体のシャドウのセルフ シャドウイングの正確性を制御します。 「0」の場合、シャドウはシャドウ キャスターのサーフェスから始まりますが、アーティファクトが多数発生します。 大きな値の場合、シャドウはキャスターから離れた場所から始まり、セルフ シャドウイング アーティファクトは発生しないものの、オブジェクトがサーフェス上で浮いているように見えることがあります。 精度とセルフシャドウイング アーティファクトの削減はトレードオフの関係にあり、その最適なバランスが得られるのは中間点の「0.5」周辺の値です。 |
Shadow Slope Bias | これは、Shadow Bias に加えて、選択したライトからのシーン全体のシャドウの正確なセルフ シャドウイングを制御します。 このプロパティは、特定のサーフェスの傾斜に応じてバイアスの量を増加させます。 「0」の場合、シャドウはキャスターのサーフェスから始まりますが、多くのセルフ シャドウイング アーティファクトが発生します。 大きな値の場合、シャドウはキャスターから離れた場所から始まり、セルフシャドウイング アーティファクトは発生しないものの、オブジェクトがサーフェス上で浮いているように見えることがあります。 |
Shadow Filter Sharpen | 固定ライトまたは可動ライトからの直接シャドウイングのシャープネスを調整します。 シャドウ マッピングのソフト シャドウイング エフェクトを軽減することができます。 |
シャドウ マップのキャッシュ
シャドウ マップのキャッシュは可動ライトの機能です。この機能により、ゲームでポイント ライトとスポット ライトからキャストされるシャドウの負荷が大幅に低下します。 移動する必要のないアセットを含むレベルでは、そのアセットのシャドウ計算により、各フレームでパフォーマンスが低下します。 シャドウ マップ キャッシングは、可動性が [Static] または [Stationary] に設定されているアセットを確認し、アセットやライトに変更がない限り、フレームごとにアセットを再計算する必要はありません。
シャドウ マップ キャッシュは、ライトの影響を受ける多数のアセットを含むレベルで特に、パフォーマンスに大きく影響します。
たとえば、3 つのシャドウをキャストする可動ポイント ライトを含む中規模のシーンでは、シャドウ深度のレンダリングに 14 ミリ秒以上かかることがあります。 キャッシュされたシャドウが有効な場合、同じ 3 つのライトのシャドウ深度のレンダリングの所要時間は約 1 ミリ秒です。
シャドウ マップ キャッシュではキャッシュされたシャドウを格納するメモリが必要です。また、ある程度大規模なシーンでは、コンソール コマンド r.Shadow.WholeSceneShadowCacheMb でシーンに割り当てるメモリ量を調整する必要がある場合があります。
シャドウ マップ キャッシュのパフォーマンス
Stat ShadowRendering でシャドウ レンダリングの統計ウィンドウを開くと、キャッシュされたシャドウのパフォーマンスを確認することができます。 次に、コンソール コマンド r.Shadow.WholeSceneShadows でキャッシュされたシャドウを有効/無効にします。
シャドウ マップ キャッシュに関する制限
シャドウ マップ キャッシュはレベルで動的シャドウイングの使用による負荷を大幅に抑えることができますが、エンジンでサポートされていない機能と併用する場合は、考慮する必要のあるいくつかの制限があります。
デフォルトでは、次のアセットが以下の条件を満たしている場合にのみキャッシュが実行されます。
レベル内のプリミティブの [Mobility (可動性)] が、[Static (静的)] または [Stationary (固定)] に設定されている。
World Position Offset (ワールド位置オフセット) を使用するマテリアルがキャッシュされない。
ポイント ライトとスポット ライトがサポートされている。また、シャドウをキャストするときは、その [Mobility] が [Movable] に設定されている必要がある。
移動するライトは、シャドウがキャッシュされない。
アニメートされた Tessellation (テッセレーション) または Pixel Depth Offset (ピクセル深度オフセット) を使用しているマテリアルではアーティファクトが発生することがある (これは、シャドウがキャッシュされるとアセットが正確に表示されないため)。