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