Lumen は、次世代コンソール向けに設計された Unreal Engine の完全に動的なグローバル イルミネーションおよび反射のシステムで、デフォルトのグローバル イルミネーションおよび反射システムです。 Lumen は、大規模で詳細度の高い環境で、mm 単位から Km 単位までのさまざまなスケールで、無限のバウンスと間接スペキュラ反射を利用したディフューズ相互反射をレンダリングできます。
Lumen の使用を開始する
新しく作成されたプロジェクトでは、デフォルトで Lumen の動的グローバル イルミネーションおよび反射が有効になっています。また、Generate Mesh Distance Fields (メッシュ ディスタンス フィールドの生成) などの依存関係もあります。 Unreal Engine 4 から Unreal Engine 5 に変換された既存のプロジェクトでは、Lumenの機能は自動的に有効になりません 。 これは、これらのプロジェクト内にあるライティング パスの破損や変更を防ぐためです。
Lumen は、[Project Settings (プロジェクト設定)] の [**Rendering (レンダリング) > Dynamic Global Illumination (ダイナミック グローバル イルミネーション)**] カテゴリおよび [**Reflections (反射)**] カテゴリで有効にすることができます。
グローバル イルミネーションと反射は個別に設定することができます。 Lumen を有効にするには、各カテゴリで次のように設定します。
Dynamic Global Illumination (ダイナミック グローバル イルミネーション):Lumen
反射メソッド:Lumen
有効にすると、まだ有効になっていない場合は、プロパティ Generate Mesh Distance Fields が有効になります。 これは、Lumen のソフトウェア レイ トレーシングモードで必要です。 エンジンを再起動する必要があります。
Lumen のグローバル イルミネーションは、スクリーン空間グローバル イルミネーション (SSGI) と ディスタンス フィールド アンビエント オクルージョン (DFAO) に代わる機能です。 また、Lumen の反射は、スクリーン空間反射に代わる機能です。
プロジェクトで Lumen を有効にすると、事前計算された静的ライトの影響が無効になり、すべてのライトマップが非表示になります。
Lumen のライティング機能
Lumen は、Unreal Engine に優れたダイナミック グローバル イルミネーション機能を追加します。また、Nanite、World Partition、仮想シャドウ マップなどの Unreal Engine 5 に搭載されている他のサポート システムと適切に連携します。
スクリーン空間グローバル イルミネーションやレイ トレーシング グローバル イルミネーション (RTGI) などの Unreal Engine 4 の機能は、質の高いリアルタイム プロジェクトにおいて、信頼性やパフォーマンスが十分ではありませんでした。 また、これらの機能は他の重要なシステムと完全には統合されておらず、エンジンのほとんどの機能を幅広くサポートすることができませんでした。
Lumen グローバル イルミネーション
Lumen グローバル イルミネーションはディフューズ間接ライティングの問題を解決します。 たとえば、サーフェスからディフューズしてバウンスする光は、そのサーフェスの色を反映し、色の付いた光を他の近くのサーフェスに反射します。 シーン内のメッシュでは間接ライティングもブロックされますが、これによって間接シャドウイングが生成されます。
Lumen では、この室内の白いペンキのような明るいディフューズ マテリアルが存在するシーンで重要となる、無限のディフューズ バウンスが提供されます。
Unreal Engine 5 の Nanite 仮想化ジオメトリ を使用すると、ジオメトリに対してこれまでにないディテールを追加することができます。 Lumen は、フル解像度のシェーディングを表現できるだけでなく、リアルタイム時のパフォーマンス維持のためにはるかに低い解像度でも間接ライティングを計算できます。
スカイ ライト (天空光) と Lumen
スカイ ライトは、Lumen のファイナル ギャザープロセスの一部として解決されます。 これには、屋外ライティングよりも屋内の空間を大幅に暗くさせることができるスカイ シャドウイングも含まれており、はるかに自然なエフェクトが得られます。
Lumenは、ライティングの透過処理とボリュメトリック フォグのために、低品質のグローバル イルミネーションも提供しています。
Lumen とエミッシブ マテリアル
エミッシブ マテリアルは、Lumen のファイナル ギャザーを使用してパフォーマンスの負荷を増大させることなくライトを伝搬させることができます。 ただし、ノイズ アーティファクトが発生する前に、どのくらい放射領域を小さく、かつ明るくできるかについては制限があります。 これにより、手動で配置された光源よりも本質的な問題解決がはるかに難しくなります。
Lumen の反射
Lumen は、マテリアルのラフネス値の全範囲で間接スペキュラまたは反射を解決できます。
ディフューズしたグローバル イルミネーションとシャドウ付きのスカイライトが、すべての反射で見られます。 Lumen の反射は、次の車のサンプルのように、クリア コート マテリアルもサポートしています。
Lumen は、次の画像にある車のフロントガラスのように、半透明の要素に光沢のある反射を与えます。
プロジェクトで [High Quality Translucency Reflections (高品質透過性反射)] が有効になっている場合、Lumen の反射では、透過サーフェス マテリアルの最前面レイヤーでのミラー反射が提供されます。
Lumen の反射で Single Layer Water (単一レイヤー ウォーター) マテリアルがサポートされるようになりました。反射は強制的にミラーリングされます。
Lumen の両面フォリッジ
両面フォリッジ シェーディング モデルは、背面からのライティングを集めてそれをリーフ経由で拡散し、マテリアルのサブサーフェス カラー で減衰させることで解決されます。
サポートされているライトのタイプとその他の機能
Lumen がサポートしている機能の概要は次のとおりです。
ディレクショナル ライト、スカイ ライト、ポイント ライト、スポット ライト、および矩形ライトを含む、すべてのライト タイプ がサポートされています。
ライト関数は、すべてのタイプのライトでサポートされています。
[Mobility(機動性)] が[Static(静的)] に設定されているライトはサポートされていません。静的ライトはライトマップ内に完全に格納され、Lumen が有効な場合は静的ライトの影響が無効になるためです。
Lumen の設定
Lumen の設定は、[Project Settings (プロジェクト設定)] と[Post Process Volume (ポストプロセス ボリューム)] の 2 か所にあります。
Lumen のプロジェクト設定
Lumen に関するまたは Lumen に影響するプロジェクト設定は、[Engine (エンジン)] > [Rendering (レンダリング)] セクションにあります。 [Project Settings] にはプロジェクトの Lumen のすべてのデフォルト設定が含まれています。
以下は、Lumen に必要な、または Lumen に影響を及ぼすすべての設定のリストです。
| プロパティ名 | 説明 |
|---|---|
| Global Illumination (グローバル イルミネーション) | |
ダイナミック グローバル イルミネーション メソッド | プロジェクトで使用するダイナミック グローバル イルミネーションのタイプを選択します。 |
| 反射 | |
反射メソッド | プロジェクトで使用する動的反射のタイプを選択します。 |
| Lumen | |
利用可能な場合、ハードウェアレイトレーシングを使用します | ビデオ カード、RHI、オペレーティング システムでサポートされている場合は、Lumen の機能のハードウェア レイ トレーシングを使用します。 サポートされていない場合、Lumen はソフトウェア レイ トレーシングに戻ります。 ハードウェア レイ トレーシングでは、100,000 個以上のインスタンスを含むシーンの更新に多大な負荷がかかります。 詳細については、「レイ トレーシング パフォーマンス ガイド」を参照してください。 |
例ライティング モード | Lumen がハードウェア レイ トレーシングを使用している場合に、Lumen の反射光をライティングする方法を制御します。 デフォルトでは、Lumen は最高のパフォーマンスを得るために Surface Cache (サーフェス キャッシュ) を使用しますが、より高い品質を得るために Hit Lighting for Reflections (反射のヒット ライティング) に設定することもできます。 |
高品質透過性反射 | 半透明のサーフェスの前面レイヤーで高品質のミラー反射を使用するかどうかを指定します。 他のレイヤーは、光沢のある反射のみを放射できる低品質の放射輝度キャッシュ メソッドを使用します。 これにより、ポストプロセス ボリュームの設定から有効にした場合に GPU の負荷が高まります |
ソフトウェア レイ トレーシング モード | シーンのレイ トレーシングを行う際に Lumen が使用するトレーシング メソッドを制御します。 詳細トレーシングは、最高の品質を実現するために、個々のメッシュのディスタンス フィールドをトレースします。 [Global Tracing (グローバル トレーシング)] は、トレースを最速で行うために、ディテールの少ないグローバル ディスタンス フィールドをトレースします。 |
| ハードウェア レイ トレーシング | |
ハードウェア レイ トレーシングをサポート | より高品質の結果を得るため、サポートされているオペレーティング システム、RHI、ビデオ カードからのレイ トレーシングを有効にします。 |
| ソフトウェア レイ トレーシング | |
メッシュ距離フィールドを生成 | スタティックメッシュのディスタンス フィールドをビルドするかどうかを指定します。 これは、Lumen によるソフトウェア レイ トレーシング距離とディスタンス フィールド アンビエント オクルージョンに必要です。ムーバブル スカイ ライト シャドウと、ディレクショナル ライトにレイ トレースしたディスタンス フィールド シャドウの実装に使用されます。 この機能を有効にすると、ビルド時間、メモリ使用量、およびスタティックメッシュのディスク サイズが増加します。 |
ディスタンス フィールド ボクセル密度 | メッシュのデフォルト スケールをディスタンス フィールドのボクセル サイズに変換する方法を設定します。 これを変更すると、すべてのディスタンス フィールドで再ビルドが必要になります。 値が大きいと、メモリがすぐに消費されます。 |
ポストプロセス設定
ポストプロセス ボリュームには、Lumen のオーバーライドとアーティストが制御するプロパティが含まれています。 この設定は、Global Illumination (グローバル イルミネーション) と Reflections (反射) カテゴリにあります。
以下は、ポストプロセス ボリュームにある Lumen に関するすべての設定のリストです。
| プロパティ名 | 説明 |
|---|---|
| Global Illumination (グローバル イルミネーション):Lumen Global Illumination (Lumen のグローバル イルミネーション) | |
Lumen Sceneライティング品質 | スケールを大きくすると、Lumen シーンがより高い忠実度で計算され、反射でライティングが見えるようになりますが、GPU の負荷が増大します。 |
Lumen シーンの詳細 | Lumen シーンで表示できるインスタンスのサイズを制御します。 値を大きくすると小さなオブジェクトも確実に表示できますが、GPU の負荷が増大します。 |
Lumen シーンの表示距離 | Lumen がレイ トレーシングのために保持するシーンの最大表示距離を設定します。 値を大きくするとスカイ シャドウイングやグローバル イルミネーションの有効範囲が広がりますが、GPU 負荷が増大します。 |
ファイナル ギャザー品質 | Lumen のグローバル イルミネーションの品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングにおける GPU の負荷が増大します。 |
画面トレース | Lumen グローバル イルミネーションにスクリーン空間のトレースを使用するかどうか。 スクリーン空間のトレースは Lumen シーンをバイパスし、代わりにシーン深度とカラーをサンプリングします。 これにより品質は向上しますが、同時に、グローバル イルミネーションのみで表示される、エミッシブ オブジェクトの追加のような Lumen シーンのみの変更を防げます。 |
最大トレース距離 | ライティングを解決するときに Lumen がトレースする最大距離を制御します。 値が小さすぎると、洞窟などの広い範囲にライティングが漏れます。 大きな値を設定すると、シーンのレンダリングにかかる GPU の負荷が増大します。 |
シーンキャプチャキャッシュ解像度 | Lumen サーフェス キャッシュ解像度のスケール係数です。 小さい値では GPU メモリを節約できますが、品質が低下します。 オーバーライドされていない場合のデフォルトは「0.5」です。 これは、シーン キャプチャ コンポーネントのポストプロセス設定を通じて設定する必要があります。 |
| Global Illumination (グローバル イルミネーション):Lumen Global Illumination (Lumen のグローバル イルミネーション):Advanced Properties (詳細プロパティ) | |
Lumen シーンライティング更新速度 | パフォーマンスを向上させるために、Lumen シーンがライティング結果をキャッシュする量を制御します。 スケールが大きいほどライティングの変化がより迅速に伝搬されますが、GPU の負荷が増大します。 |
ファイナル ギャザー ライティング更新速度 | パフォーマンスを向上させるために、Lumen ファイナル ギャザーがライティング結果をキャッシュする量を制御します。 スケールが大きいほどライティングの変化がより迅速に伝搬されますが、GPU の負荷が増大します。 |
Diffuse Color Boost | マテリアル ディフューズ カラーを Pow(DiffuseColor, 1 / DiffuseColorBoost) として計算することで、間接ライティングを明るくできます。 1 より大きい値 (オリジナルのディフューズ カラー) は物理的に正しくありませんが、シーン内の反射光の量を増やすためのアート ディレクション ノブとして有用です。 反射光がシーンよりも明るくなるため、2 よりも小さい値にすることを推奨します。 |
Skylight Leaking | 許容する漏れの量をスカイ ライトの強度の割合で制御します。 これは、屋内の領域が完全に暗くなってしまうことを防ぐアート ディレクション ノブ (非物理ベース) として有用です。 |
Full Skylight Leaking Distance | スカイライト漏れの強度が最大となる、光を受けるサーフェスからの距離を制御します。 値が小さいとスカイライト漏れはよりフラットになり、値が大きいとアンビエント オクルージョン エフェクトが発生します。 |
| Reflections (反射):Lumen Reflections (Lumen の反射) | |
Quality | サーフェス上の Lumen の反射の品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングにおける GPU の負荷が増大します。 |
例ライティング モード | Lumenとハードウェア レイ トレーシングを使用している場合、この設定は、反射がSurface Cacheを再利用して負荷の低いライティングを行うか、ヒット ポイントでライティングを計算してより高い品質を実現するかを制御します。 |
画面トレース | Lumen グローバル イルミネーションにスクリーン空間のトレースを使用するかどうか。 スクリーン空間のトレースは Lumen シーンをバイパスし、代わりにシーン深度とカラーをサンプリングします。 これにより品質は向上しますが、同時に、グローバル イルミネーションのみで表示される、エミッシブ オブジェクトの追加のような Lumen シーンのみの変更を防げます。 |
高品質透過性反射 | 半透明のサーフェスの前面レイヤーで高品質のミラー反射を使用するかどうかを指定します。 他のレイヤーは、光沢のある反射のみを放射できる低品質の放射輝度キャッシュ メソッドを使用します。 有効にすると GPU の負荷が増大します。 事前に [Project Setting (プロジェクト設定)] で High Quality Translucency Reflections (高品質透過性反射) を有効にしておく必要があります。 |
トレースする最大ラフネス | Lumen が引き続き専用の反射光線をトレースする最大ラフネス値を設定します。 値が大きいと反射の品質が向上しますが、GPU のコストも大幅に増加します。 |
最大リフレクションバウンス | 再帰反射バウンスの最大回数を設定します。 デフォルトは 1 で、鏡などのサーフェスでは二次反射のない単一の反射光線を意味します。 パフォーマンス バジェットが十分にある場合、2 回以上のバウンスにより反射で領域が黒くなるのを防ぐことができます。 このポスト プロセス設定はバウンスを最大 8 回まで可能です。 |
最大屈折バウンス数 | トレースする屈折イベントの最大数。 ヒット ライティングが使用されているとき、Lumen の最大屈折バウンス数が 0 より大きい場合は半透明メッシュがトレースされ、反射トレーシングにより負荷がかかります。 |
追記
以下では、プロジェクトで Lumen 機能を使用する際に留意する必要のあるいくつかの考慮事項について説明します。
Lumen のライティング更新速度
Lumen は、優れたリアルタイム パフォーマンスを実現するために多くのキャッシュを使用しています。 ローカル ライティングを変更した場合はすばやく反映されますが、太陽を無効にするといったグローバル ライティングの変更の場合は、反映されるまでに数秒かかることがあります。 プロジェクトでは、[Lumen Scene Lighting Update Speed (Lumen シーンのライティング更新速度)] と [Final Gather Lighting Update Speed (ファイナル ギャザー ライティング更新速度)] ポストプロセス ボリュームのコントロール を使用して、この遅延に対処することができます。ただし、GPU の負荷は増大します。
プロジェクトの静的ライトを無効にする
Lumen が有効になっている場合は、静的ライトから事前計算されたライティングが削除されます。 [Project Setting(プロジェクト設定)] の[Engine(エンジン)] > [Rendering(レンダリング)]セクションの [Allow Static Lighting (静的ライティングを許可)]を無効にすることで、プロジェクトで事前計算されたライティングを完全に無効化することができます。
静的ライトを無効にすると、シェーダーの順列によって発生する静的ライトのオーバーヘッドも軽減できます。 また、マテリアル アンビエント オクルージョン で Lumen グローバル イルミネーションと連携できるようになります。
静的ライトをすでに使用しているプロジェクトでは、レベルの[World Settings (ワールド セッティング)]で **[Force No Precomputed Lighting (事前計算されたライティングなしを強制)] を有効にするまで、ライトマップがメモリとディスクにロードされます。 その際は、ライティングを再ビルドしてレベルを保存することで、ライトマップ データを削除する必要があります。
ベイクされた静的ライティングで Lumen の反射を使用する
Lumen の反射は、Lumen グローバル イルミネーションなしで使用できます。 これは、静的ライティングを使用するゲームやプロジェクトで、配置された反射キャプチャの能力を超えて反射の品質を拡張したい場合に最も役立ちます。 スタンドアローンの Lumen 反射を使用するには、Lumen ハードウェア レイ トレーシング モードを有効にする必要があります。これにより、反射のヒット ライティングが自動的に有効になります。
クリア コート マテリアル
Lumen はクリア コート マテリアル (デュアル法線を含む) をサポートしていますが、いくつかの制限があります。 具体的には次のとおりです。
一番上のレイヤーのみが低いラフネス (粗さ) 値を持つことができます。 一番下のレイヤーは粗い値を持つことが前提となっており、光沢のある結果につながります。 この制限は、1 ピクセルあたり 1 本の反射光線をキャストすることで、一番上と一番下の両方のレイヤーからシャープな反射がキャストされるのを防止するためです。
クリア コートの量が 0 の場合、上記の制限が引き続き適用されます。 これは、単一の (一番下) のレイヤーがあるにもかかわらず、低いラフネス値でも反射が光沢/粗く見え続けることを意味します。
マテリアルのアンビエント オクルージョン
Lumen のグローバル イルミネーションは、スケルタル メッシュで信頼性の高いセルフ オクルージョンを提供するマテリアル アンビエント オクルージョンをサポートしています。
マテリアルのアンビエント オクルージョンと Lumen を併用するには、次のように設定します。
[Project Setting(プロジェクト設定)] の [Allow Static Lighting (静的ライトを許可)] を無効にして、GBuffer にスペースを作成します。
出力するマテリアルを[Ambient Occlusion (アンビエント オクルージョン)] に設定します。
マテリアルのアンビエント オクルージョンは、バッファビジュアライゼーションアンビエントオクルージョン 表示モードの使用時は利用することができません。
Lumen のグローバル イルミネーションではマテリアル ベント法線マップをサポートしています。 このマップはマテリアルのアンビエント オクルージョンよりも大幅に負荷が高い一方で、ビジュアル面の改善はほんのわずかです。
ベント法線マップと Lumen を併用するには、次のように設定します。
プロジェクトのコンフィギュレーション ファイル「DefaultEngine.ini」の
[SystemSettings]セクションでr.GBufferDiffuseSampleOcclusion=1を設定し、エディタを再起動します。Bent Normal(ベント法線) カスタム出力ノードに出力するマテリアルを設定します。