可動ライト

実行中にすべてのプロパティを変更できる完全に動的なライトです。

Choose your operating system:

Windows

macOS

Linux

lighting_overview_banner_001.png

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

シャドウイング

可動ライトはシャドウをキャストし、シーン全体の動的なシャドウを使用する設定になっていますが、パフォーマンス負荷はかなり高いです。パフォーマンス負荷の主な原因は、ライトの影響を受けるメッシュの数およびそれらのメッシュのトライアングル数です。つまり、大きな半径のシャドウ キャスティングの可動ライトは、小さな半径の可動ライトよりも何倍も負荷がかかるということです。

使用方法

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

ML_movableProp.png

シャドウ バイアス

ライトの Shadow Bias プロパティを調整すると、動的ライティングの使用時にシャドウマッピング技術 (ジオメトリ フェース全体のファセットなど) によって発生する可能性があるシャドウイング アーティファクトが減少します。

使用方法

シャドウ バイアスは、Slope Bias (または Constant Bias) プロパティと Shadow Slope Bias プロパティを使用してライトごとに調節できます。Shadow Slope Bias を調節すると Shadow Bias に比例し、この 2 つのプロパティの間で発生する可能性のあるシャドウ マッピング アーティファクトを減らすことができます。

Shadow Bias (Constant と Slope):デフォルト

Shadow Bias (Constant と Slope):調節後

Shadow Slope Bias を調整すると、シャドウの精度が失われたときのセルフ シャドウイング アーティファクトが減少します。これにより、シーン内の接地しているオブジェクトにピーターパン (またはフローティング) 効果が生じる可能性があります。動的ライティングに関するセルフ シャドウイングの問題は、すべてではありませんが [Slope Bias] を調整することでほとんど解決できます。プロジェクトで最適なバランスを探してみてください。

指向性ライトにはデプス バイアス プロパティがもう 1 つあり、カスケード シャドウマップ (Cascaded Shadow Maps: CSM) 全体のバイアス強度を制御して、カスケード トランジション ポイントでのシャドウ アーティファクトの不連続性を低減できます。

Shadow Bias (Constant と Slope):デフォルト

Shadow Bias (Constant と Slope):調整済み

ライトごとのプロパティに加えて、「0-1」の値を使用して、ライトタイプごとのグローバル コンソール変数を通じて、定数、スロープ、およびレシーバ バイアスを制御できます。

  • 指向性ライト: r.Shadow.CSMReceiverBias

  • スポット ライト: r.Shadow.SpotReceiverBias

  • ポイント ライト: r.Shadow.PointReceiverBias

  • 矩形ライト: r.Shadow.RectReceiverBias

シャドウ バイアス設定

次の設定により、ライティングとシャドウイングのシーンのバイアスを調整できます。

プロパティ

説明

ポイント ライト、スポット ライト、矩形ライト

Shadow Bias

このライトからのシーン全体のシャドウのセルフ シャドウイングの正確さを制御します。「0」の時、シャドウはキャスターのサーフェスから始まりますが、セルフ シャドウイング アーティファクトが多数発生します。大きな値の場合、シャドウはキャスターから離れた場所から始まり、セルフ シャドウイング アーティファクトはありませんが、オブジェクトがサーフェス上で飛んでいたり浮いていたりするように見えることがあります。精度とセルフ シャドウイング アーティファクトの削減はトレードオフの関係ですが、そのバランスが良いのは「0.5」周辺の値です。

これはシャドウのソフト遷移にも影響します。

Shadow Slope Bias

このプロパティは、Shadow Bias に加えて、このライトからのシーン全体のシャドウの正確なセルフ シャドウイングを制御します。特定のサーフェスの傾斜に応じてバイアスの量を増加させることで機能します。「0」の時、シャドウはキャスターのサーフェスから始まりますが、多くのセルフ シャドウイング アーティファクトが発生します。大きな値の場合、シャドウはキャスターから離れた場所から始まり、セルフ シャドウイング アーティファクトはありませんが、オブジェクトがサーフェス上で飛んでいたり浮いていたりするように見えることがあります。精度とセルフ シャドウイング アーティファクトの削減はトレードオフの関係ですが、そのバランスが良いのは「0.5」周辺の値です。

これはシャドウのソフト遷移にも影響します。

指向性ライト

Shadow Bias

このライトからのシーン全体のシャドウのセルフ シャドウイングの正確さを制御します。「0」の時、シャドウはキャスターのサーフェスから始まりますが、セルフ シャドウイング アーティファクトが多数発生します。大きな値の場合、シャドウはキャスターから離れた場所から始まり、セルフ シャドウイング アーティファクトはありませんが、オブジェクトがサーフェス上で飛んでいたり浮いていたりするように見えることがあります。精度とセルフ シャドウイング アーティファクトの削減はトレードオフの関係ですが、そのバランスが良いのは「0.5」周辺の値です。

これはシャドウのソフト遷移にも影響します。

Shadow Slope Bias

このプロパティは、Shadow Bias に加えて、このライトからのシーン全体のシャドウの正確なセルフ シャドウイングを制御します。特定のサーフェスの傾斜に応じてバイアスの量を増加させることで機能します。「0」の時、シャドウはキャスターのサーフェスから始まりますが、多くのセルフ シャドウイング アーティファクトが発生します。大きな値の場合、シャドウはキャスターから離れた場所から始まり、セルフ シャドウイング アーティファクトはありませんが、オブジェクトがサーフェス上で飛んでいたり浮いていたりするように見えることがあります。精度とセルフ シャドウイング アーティファクトの削減はトレードオフの関係ですが、そのバランスが良いのは「0.5」周辺の値です。

これはシャドウのソフト遷移にも影響します。

Shadow Cascade Bias Distribution

指向性ライトのカスケード全体のデプス バイアス スケーリングを制御します。これにより、シャドウ カスケード トランジション間のシャドウ アーティファクトの違いを小さくすることができます。値が「1」の場合、各カスケード サイズに基づいてシャドウ バイアスがスケールされますが、値が「0」の場合は、すべてのカスケードにわたってシャドウ バイアスを均一にスケーリングします。

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

ポイント ライトまたはスポット ライトが移動しない場合、そのライトのシャドウマップを格納して、次のフレームで再利用できます。これにより、周囲がそれほど動かないゲームで、シャドウ キャスティングの可動なポイント ライトとスポット ライトの負荷が更に下がります。このセクションでは、独自のプロジェクトでシャドウマップのキャッシュを使用する方法について説明します。

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

Shadow Map Caching (シャドウマップ キャッシュ) は、UE4 プロジェクトでは自動で有効となっています。パフォーマンスを確認するには、次の手順を実行してシャドウマップ キャッシュの有効または無効を切り替えます。

次のシャドウマップ キャッシュのデモでは、「Sun Temple」プロジェクトが使用されています。Sun Temple マップは、Epic Games Launcher の [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

    [CallCount] セクションと [InclusiveAug] セクションの数字をメモすることを忘れないでください。

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

    Cast Shadows オン

    Cast Shadows オフ

パフォーマンス

シャドウマップ キャッシュは、パフォーマンスに大きな影響を与えます。以下は、1920x1200 の画面解像度で NVIDIA 970 GTX GPU を使用してこの最適化をテストした結果です。

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

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

    33 のポイントライトの効果をレンダリングするために 2 ms 必要なことに注目してください。これは変更に影響されずに別の方法で最適化することができます。

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

制限事項

シャドウマップ キャッシュは UE4 プロジェクトで動的シャドウの使用による負荷を抑えることができますが、サポートされていない機能と一緒に使うとレンダリング アーティファクトを引き起こす可能性のある制限事項がいくつかあります。

  • デフォルトでは、オブジェクトが次の要件を満たしている場合にのみキャッシュが発生します。

    • プリミティブの [Mobility (可動性)] 設定が Static または Stationary になっている場合。

    • レベルで使用しているマテリアルが World Position Offset (ワールド位置オフセット) を使用していない場合。

    • ライトが ポイント ライトか スポット ライトのいずれかで、[Mobility (可動性)]Movable に設定されており、Shadow Casting が有効になっている場合。

    • ライトを 1 つの場所に残している場合。

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

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル