Language:
Page Info
Engine Version:

Movable Lights (可動ライト)

lighting_overview_banner_001.png

Movable Lights (可動ライト) は動的ライトとシャドウを完全にキャストし、位置、回転、カラー、輝度、フォールオフ、半径、そして他の全てのプロパティを変更することができます。Movable Lights (可動ライト) がキャストするライトは、ライトマップにベイクされず、現在、間接ライティングを持つことはできません。

シャドウイング

シャドウをキャストするための Movable Lights (可動ライト) のセットアップは、シーン全体の動的シャドウを使用します。これは、かなりのパフォーマンス負荷がかかります。パフォーマンス負荷は、主にライトの影響を受けるメッシュ数とこうしたメッシュのトライアングル カウントによって生じます。つまり、シャドウをキャストする Movable Lights (可動ライト) で半径の大きなものは、小さな半径の可動ライトに比べて何倍も負荷が大きくなります。

使用方法

ライトの [Transform (変形)] カテゴリには [Mobility (可動性)] と呼ばれるプルダウン プロパティがあります。このプロパティを [Movable (可動)] に変更します。このプロパティは、ブループリントに追加されたライト コンポーネントにも表示されます。

ML_movableProp.png

シャドウマップのキャッシュ

移動しないポイント ライトまたはスポット ライトに対して、シャドウ マップを格納して次のフレームに再利用することができます。この機能は、背景が通常は動かないゲームでは、シャドウ キャスティング ムーバブル ポイントライトとスポットライトの効率を上げます。次のドキュメントでは、この機能を UE4 プロジェクトで使用する方法を説明します。

シャドウマップ キャッシュとパフォーマンスの確認方法

Shadow Map Caching (シャドウマップ キャッシュ) は UE4 プロジェクトでは自動的に有効にされます。シャドウマップ キャッシュののパフォーマンスを確認するために、以下の手順でシャドウマップ キャッシュの有効 / 無効を切り替えます。

以下のシャドウマップ キャッシュのデモには Sun Temple プロジェクトを使用しました。Sun Temple マップは、エピック ゲームズ ランチャーの [Learn] タブから見つけることができます。

  1. プロジェクト レベルで動的シャドウをキャストしたいライトをすべて選択します。

    SMC_Select_All_Lights.png

  2. ライトの [Mobility (可動性)][Movable] に設定し、[Cast Shadows (シャドウをキャストする)] が有効になっていることを確認します。

    SMC_Set_Mob_Shadow_Cast.png

  3. Backtick (`) キーを押して コンソール を開き、Stat Shadowrendering と入力して動的シャドウの現在の負荷を確認します。

    SMC_Console_ShadowRendering.png

  4. Backtick (`) キーを押して コンソール を開き、r.Shadow.CacheWholeSceneShadows 0 と入力して動的シャドウ キャッシュを無効にします。

    SMC_Disable_Shadow_Cache.png

    Make sure to note the the numbers in the [CallCount] セクションと [InclusiveAug] セクションの数字のメモを必ず取ってください。

  5. 再度 Backtick キーを押して コンソール を開き、r.Shadow.CacheWholeSceneShadows 1 と入力して動的シャドウ キャッシュを再度有効にします。CallCountInclusiveAug の数を比較すれば、この機能が動的シャドウのパフォーマンスに影響を及ぼしていることが分かります。

    Shadow Caching On

    Shadow Caching Off

パフォーマンス

シャドウマップ キャッシュのパフォーマンスに対する影響は非常に大きいです。解像度 1920x1200 の画面で NVIDIA 970 GTX GPU を使って最適化をテストした結果です。

  • この機能を有効にする前は、キャッシュのないシャドウキャストするポイント ライト 3 個のシャドウ深度のレンダリング時間は 14.89 ms でした。

  • Cached Shadow Maps を有効にすると、同じ 3 つのシャドウ キャスト ライトのレダリング時間は 16 倍の速さ の 9ms となります。

    33 個のポイント ライト分のレンダリングにはまだ 2ms かかることに留意してください。別の方法でも最適化できますが、この変更は反映されません。

  • r.Shadow.WholeSceneShadowCacheMb を使って Shadow Map Cache が使用している最大メモリを調節します。

制限事項

シャドウマップ キャッシュは UE4 プロジェクトで動的シャドウの使用による負荷を抑えることができますが、サポートされていない機能と一緒に使うとレンダリング アーティファクトの原因となります。次のセクションでは、シャドウマップ キャッシングの制約およびその対策を説明します。

  • デフォルトで、キャッシングはオブジェクトが以下の要件を満たした時のみ起こる設定です。

    • プリミティブの [Mobility (可動性)][Static (静的)] または [Stationary (固定)] に設定されている場合

    • レベルで使用しているマテリアルが World Position Offset を使わない場合

    • ライトは ポイント ライトか スポット ライトのいずれか、[Mobility (可動性)][Movable (可動)] に設定して [Shadow Casting] を有効にします。

    • ライトは 1 個所に残しておかなければなりません。

    • アニメートしている テセレーション または Pixel Depth Offset (ピクセル深度オフセット) を使用しているマテリアルは、シャドウ深度がキャッシュされるとアーティファクトを生じ得ることがあります。