Lumen は、次世代コンソール向けに設計された Unreal Engine 5 の完全に動的なグローバル イルミネーションおよび反射のシステムで、デフォルトのグローバル イルミネーションおよび反射システムです。Lumen は、大規模で詳細度の高い環境で、mm 単位から Km 単位までのさまざまなスケールで、無限のバウンスと間接スペキュラ反射を利用したディフューズ相互反射をレンダリングできます。
![Example scene with Lumen global illumination and reflections.](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/5c5b6ff1-61e6-4362-a920-14136b7dba6d/lumen-scionti-04.png)
Lumen の使用を開始する
新しく作成されたプロジェクトでは、デフォルトで Lumen の動的グローバル イルミネーションおよび反射が、Generate Mesh Distance Fields (メッシュ ディスタンス フィールドの生成) などの依存関係とともに有効になっています。Unreal Engine 4 から Unreal Engine 5 に変換された既存のプロジェクトでは、Lumen の機能は自動的には有効に なりません。これは、これらのプロジェクト内にあるライティング パスの破損や変更を防ぐためです。
Lumen は、[Project Settings (プロジェクト設定)] の [Rendering (レンダリング)] > [Dynamic Global Illumination (ダイナミック グローバル イルミネーション)] カテゴリおよび [Reflections (反射)] カテゴリで有効にすることができます。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/c1a87f80-3bca-4cbd-8556-c9fa21ec3075/projectsettings_gettingstarted.png)
グローバル イルミネーションと反射は個別に設定することができます。Lumen を有効にするには、各カテゴリで次のように設定します。
- Dynamic Global Illumination (ダイナミック グローバル イルミネーション):Lumen
- Reflection Method (反射メソッド):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 グローバル イルミネーションはディフューズ間接ライティングの問題を解決します。たとえば、サーフェスからディフューズしてバウンスする光は、そのサーフェスの色を反映し、色の付いた光を他の近くのサーフェスに反射します。シーン内のメッシュでは間接ライティングもブロックされますが、これによって間接シャドウイングが生成されます。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/63a74b5f-95a4-4992-a3db-3315d8763baf/lumentechdemo_2.png)
Lumen では、この室内の白いペンキのような明るいディフューズ マテリアルが存在するシーンで重要となる、無限のディフューズ バウンスが提供されます。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/f6d9f081-f807-486a-a82b-e003b457e8c8/lumengi_apartment.png)
Unreal Engine 5 の Nanite 仮想化ジオメトリ を使用すると、ジオメトリに対してこれまでにないディテールを追加することができます。Lumen は、フル解像度のシェーディングを表現できるだけでなく、リアルタイム時のパフォーマンス維持のためにはるかに低い解像度でも間接ライティングを計算できます。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/fa997ac2-1fa0-4010-892d-d2259b03523c/lumentechdemo_3.png)
スカイ ライト (天空光) と Lumen
スカイ ライト (天空光) は、Lumen の ファイナル ギャザー プロセスの一環として解決されます。これには、屋外ライティングよりも屋内の空間を大幅に暗くさせることができるスカイ シャドウイングも含まれており、はるかに自然なエフェクトが得られます。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/30788f8b-6b14-49f8-b661-1e70722a431d/lumentechdemo_1.png)
Lumen は、ライティングの透過処理 と ボリュメトリック フォグ 向けに、低品質のグローバル イルミネーションも提供しています。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/1f270550-6770-48b9-bc5f-a1a8f9d698e9/shadowedfogvolume.png)
Lumen とエミッシブ マテリアル
エミッシブ マテリアルは、Lumen のファイナル ギャザーを使用してパフォーマンスの負荷を増大させることなくライトを伝搬させることができます。ただし、ノイズ アーティファクトが発生する前に、どのくらい放射領域を小さく、かつ明るくできるかについては制限があります。これにより、手動で配置された光源よりも本質的な問題解決がはるかに難しくなります。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/476f174c-c4bf-4abe-a6f3-e2a314050b82/lumen_emissive.png)
Lumen の反射
Lumen は、マテリアルのラフネス値の全範囲で間接スペキュラまたは反射を解決できます。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/3c337423-d360-47f5-baae-814c5d1acca5/lumenreflections.png)
ディフューズしたグローバル イルミネーションとシャドウ付きのスカイライトが、すべての反射で見られます。Lumen の反射は、次の車のサンプルのように、クリア コート マテリアルもサポートしています。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/c8198f68-3ce9-4f98-9dbf-b5cd068e0416/lumen_skylight.png)
Lumen は、次の画像にある車のフロントガラスのように、半透明の要素に光沢のある反射を与えます。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/17e6e5e9-a63b-4c0a-9666-465be17293c4/lumen-glossy-reflections.jpg)
プロジェクトで [High Quality Translucency Reflections (高品質透過性反射)] が有効になっている場合、Lumen の反射では、透過サーフェス マテリアルの最前面レイヤーでミラー反射が提供されます。
![Mirror reflections using High Quality Translucent Reflectoions for the project.](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/27d3056d-37ce-4e58-b178-6535100103be/lumen-hq-reflections.png)
Lumen の反射で Single Layer Water (単一レイヤー ウォーター) マテリアルがサポートされるようになりました。反射は強制的にミラーリングされます。
![Water material using Single Layer Water with Lumen Reflections.](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/4b06a226-8eb6-430e-8065-2f8a04b4cb22/lumen-slw-reflections.png)
Lumen の両面フォリッジ
両面フォリッジ シェーディング モデルは、背面からのライティングを集めてそれをリーフ経由で拡散し、マテリアルの サブサーフェス カラー で減衰させることで解決されます。
![Comparison example of two-sided foliage lit by Lumen.](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/eb984782-6aa0-4951-9a8e-2fbb3f1d9f77/lumen-foliage-1.png)
![Example scene with tree canopy's lit by Lumen.](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/3e9f2454-344d-4532-a13d-41684f989068/lumen-foliage-2.png)
サポートされているライトのタイプとその他の機能
Lumen がサポートしている機能の概要は次のとおりです。
- ディレクショナル ライト、スカイ ライト (天空光)、ポイント ライト、矩形ライトなどを含むすべての ライト タイプ がサポートされています。
- Light 関数 はすべてのタイプのライトでサポートされています。
- [Mobility (可動性)] が [Static (スタティック)] に設定されているライトはサポートされていません。静的ライトはライトマップ内に完全に格納され、Lumen が有効な場合は静的ライトの効果が無効になるためです。
Lumen の設定
Lumen の設定は、[Project Settings (プロジェクト設定)] と [Post Process Volume (ポスト プロセス ボリューム)]) の 2 か所にあります。
Lumen のプロジェクト設定
Lumen に関するプロジェクト設定、または Lumen に影響を及ぼすプロジェクト設定は、[Engine (エンジン)] > [Rendering (レンダリング)] セクションにあります。[Project Settings] にはプロジェクトの Lumen のすべてのデフォルト設定が含まれています。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/504603b4-b8fe-46d5-8f51-1013bb8e2e7f/projectsettings_lumen.png)
以下は、Lumen に必要な、または Lumen に影響を及ぼすすべての設定のリストです。
プロパティ名 | 説明 |
---|---|
Global Illumination (グローバル イルミネーション) | |
Dynamic Global Illumination Method | プロジェクトで使用するダイナミック グローバル イルミネーションのタイプを選択します。 |
Reflections (反射) | |
Reflection Method | プロジェクトで使用する動的反射のタイプを選択します。 |
Lumen | |
Use Hardware Ray Tracing when available | ビデオ カード、RHI、オペレーティング システムでサポートされている場合は、Lumen の機能のハードウェア レイ トレーシングを使用します。サポートされていない場合、Lumen はソフトウェア レイ トレーシングにフォールバックします。ハードウェア レイ トレーシングでは、100,000 個以上のインスタンスを含むシーンの更新に多大な負荷がかかります。詳細については、「レイ トレーシング パフォーマンス ガイド」を参照してください。 |
Ray Lighting Mode | Lumen がハードウェア レイ トレーシングを使用している場合に、Lumen の反射光をライティングする方法を制御します。Lumen は、最高のパフォーマンスを得るためにデフォルトで [Surface Cache (サーフェス キャッシュ)] を使用しますが、より高い品質を得るために [Hit Lighting for Reflections (反射のヒット ライティング)] に設定することもできます。 |
High Quality Translucency Reflections | 半透明のサーフェスの前面レイヤーで高品質のミラー反射を使用するかどうかを指定します。他のレイヤーは、光沢のある反射のみを放射できる低品質の放射輝度キャッシュ メソッドを使用します。これにより、ポストプロセス ボリュームの設定から有効にした場合に GPU の負荷が高まります |
Software Ray Tracing Mode | シーンのレイ トレーシングを行う際に Lumen が使用するトレーシング メソッドを制御します。[Detail Tracing (詳細トレーシング)] では、最高品質を得るために、個々のメッシュのディスタンス フィールドをトレースします。[Global Tracing (グローバル トレーシング)] は、トレースを最速で行うために、ディテールの少ないグローバル ディスタンス フィールドをトレースします。 |
Hardware Ray Tracing (ハードウェア レイ トレーシング) | |
Support Hardware Ray Tracing | より高品質の結果を得るため、サポートされているオペレーティング システム、RHI、ビデオ カードからのレイ トレーシングを有効にします。 |
Software Ray Tracing (ソフトウェア レイ トレーシング) | |
Generate Mesh Distance Fields | スタティックメッシュのディスタンス フィールドをビルドするかどうかを指定します。これは、Lumen によるソフトウェア レイ トレーシング距離とディスタンス フィールド アンビエント オクルージョンに必要です。ムーバブル スカイ ライト シャドウと、ディレクショナル ライトにレイ トレースしたディスタンス フィールド シャドウの実装に使用されます。この機能を有効にすると、ビルド時間、メモリ使用量、およびスタティックメッシュのディスク サイズが増加します。 |
Distance Field Voxel Density | メッシュのデフォルト スケールをディスタンス フィールドのボクセル サイズに変換する方法を設定します。これを変更すると、すべてのディスタンス フィールドで再ビルドが必要になります。値が大きいと、メモリがすぐに消費されます。 |
ポストプロセスの設定
ポストプロセス ボリュームには、Lumen のオーバーライドとアーティストが制御するプロパティが含まれています。この設定は、[Global Illumination] カテゴリと [Reflections] カテゴリにあります。
![](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/9a3af092-0c33-4012-a83e-728f01051c68/postprocessvolumeoverrides.png)
以下は、ポストプロセス ボリュームにある Lumen に関するすべての設定のリストです。
プロパティ名 | 説明 |
---|---|
Global Illumination (グローバル イルミネーション):Lumen Global Illumination (Lumen のグローバル イルミネーション) | |
Lumen Scene Lighting Quality | スケールを大きくすると、Lumen シーンがより高い忠実度で計算され、反射でライティングが見えるようになりますが、GPU の負荷が増大します。 |
Lumen Scene Detail | Lumen シーンで表示できるインスタンスのサイズを制御します。値を大きくすると小さなオブジェクトも確実に表示できますが、GPU の負荷が増大します。 |
Lumen Scene View Distance | Lumen がレイ トレーシングのために保持するシーンの最大表示距離を設定します。値を大きくするとスカイ シャドウイングやグローバル イルミネーションの有効範囲が広がりますが、GPU 負荷が増大します。 |
Final Gather Quality | Lumen のグローバル イルミネーションの品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングにおける GPU の負荷が増大します。 |
画面トレース | Lumen グローバル イルミネーションにスクリーン空間を使用するかどうか。スクリーン空間はバイパス Lumen シーンをトレースし、代わりにシーン深度とカラーをサンプリングします。これにより品質は向上しますが、同時に、グローバル イルミネーションのみで表示される、エミッシブ オブジェクトの追加のような Lumen シーンのみの変更を防げます。 |
最大トレース距離 | ライティングを解決するときに Lumen がトレースする最大距離を制御します。値が小さすぎると、洞窟などの広い範囲にライティングが漏れます。大きな値を設定すると、シーンのレンダリングにかかる GPU の負荷が増大します。 |
Scene Capture Cache Resolution | Lumen サーフェス キャッシュ解像度のスケール係数です。小さい値では GPU メモリを節約できますが、品質が低下します。オーバーライドされていない場合のデフォルトは「0.5」です。これは、シーン キャプチャ コンポーネントのポストプロセス設定を通じて設定する必要があります。 |
Global Illumination (グローバル イルミネーション):Lumen Global Illumination (Lumen のグローバル イルミネーション):Advanced Properties (詳細プロパティ) | |
Lumen シーン ライティングの更新速度 | パフォーマンスを向上させるために、Lumen シーンがライティング結果をキャッシュする量を制御します。スケールが大きいほどライティングの変化がより迅速に伝搬されますが、GPU の負荷が増大します。 |
Final Gather Lighting Update Speed | パフォーマンスを向上させるために、Lumen ファイナル ギャザーがライティング結果をキャッシュする量を制御します。スケールが大きいほどライティングの変化がより迅速に伝搬されますが、GPU の負荷が増大します。 |
Diffuse Color Boost | マテリアル ディフューズ カラーを Pow(DiffuseColor, 1 / DiffuseColorBoost) として計算することで、間接ライティングを明るくできます。1 より大きい値 (オリジナルのディフューズ カラー) は物理的に正しくありませんが、シーン内の反射光の量を増やすためのアート ディレクション ノブとして有用です。反射光がシーンよりも明るくなるため、2 よりも小さい値にすることを推奨します。 |
Skylight Leaking (スカイライト漏れ) | 許容する漏れの量をスカイ ライトの強度の割合で制御します。これは、屋内の領域が完全に暗くなってしまうことを防ぐアート ディレクション ノブ (非物理ベース) として有用です。 |
Full Skylight Leaking Distance (フルスカイライト漏れ距離) | スカイライト漏れの強度が最大となる、光を受けるサーフェスからの距離を制御します。値が小さいとスカイライト漏れはよりフラットになり、値が大きいとアンビエント オクルージョン エフェクトが発生します。 |
Reflections (反射):Lumen Reflections (Lumen の反射) | |
Quality | サーフェス上の Lumen の反射の品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングにおける GPU の負荷が増大します。 |
Ray Lighting Mode | この設定では、Lumen でのハードウェア レイ トレーシング を使用する際に、反射でサーフェス キャッシュを再利用して低負荷のライティングを行うか、ヒット ポイントでライティングを計算してより高い品質を得るかを制御します。 |
画面トレース | Lumen グローバル イルミネーションにスクリーン空間を使用するかどうか。スクリーン空間はバイパス Lumen シーンをトレースし、代わりにシーン深度とカラーをサンプリングします。これにより品質は向上しますが、同時に、グローバル イルミネーションのみで表示される、エミッシブ オブジェクトの追加のような Lumen シーンのみの変更を防げます。 |
高品質透過性反射 | 半透明のサーフェスの前面レイヤーで高品質のミラー反射を使用するかどうかを指定します。他のレイヤーは、光沢のある反射のみを放射できる低品質の放射輝度キャッシュ メソッドを使用します。有効にすると GPU の負荷が増大します。事前に [Project Setting] で [High Quality Translucency Reflections] を有効にしておく必要があります。 |
トレースする最大ラフネス | Lumen が引き続き専用の反射光線をトレースする最大ラフネス値を設定します。値が大きいと反射の品質が改善されますが、GPU コストが大幅に高まります |
最大反射バウンス | 再帰反射バウンスの最大回数を設定します。デフォルトは 1 で、鏡などのサーフェスでは二次反射のない単一の反射光線を意味します。パフォーマンス バジェットが十分にある場合、2 回以上のバウンスにより反射で領域が黒くなるのを防ぐことができます。このポスト プロセス設定はバウンスを最大 8 回まで可能です。r.Lumen.Reflections.MaxBounces を使用すると、ポスト プロセス設定をオーバーライドして、最大 64 回の反射バウンスを許容できます。プロジェクト設定で 反射のヒット ライティングでのハードウェア レイ トレーシング を有効にする必要があります。 |
最大屈折バウンス数 | トレースする屈折イベントの最大数。ヒット ライティングが使用されているとき、Lumen の最大屈折バウンス数が 0 より大きい場合は半透明メッシュがトレースされ、反射トレーシングにより負荷がかかります。 |
追記
以下では、プロジェクトで Lumen 機能を使用する際に留意する必要のあるいくつかの考慮事項について説明します。
Lumen のライティング更新速度
Lumen は、優れたリアルタイム パフォーマンスを実現するために多くのキャッシュを使用しています。ローカル ライティングを変更した場合はすばやく反映されますが、太陽を無効にするといったグローバル ライティングの変更の場合は、反映されるまでに数秒かかることがあります。プロジェクトでは ポストプロセス ボリューム の [Lumen Scene Lighting Update Speed] と [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 Material Ambient Occlusion](https://d1iv7db44yhgxn.cloudfront.net/documentation/images/197fa116-a786-44d0-a573-84eea9dc11ae/lumen-ambient-occlusion.png)
スクリーン トレース (ソフトウェア レイ トレーシング) のみを使ったスケルタルメッシュ上の Lumen GI (左)、マテリアルのアンビエント オクルージョン (右)
マテリアルのアンビエント オクルージョンは、Buffer Visualization Ambient Occlusion 表示モードの使用時は利用することができません。
Lumen のグローバル イルミネーションではマテリアルの ベント法線マップ をサポートしていますが、このマップはマテリアルのアンビエント オクルージョンよりも大幅に負荷が高い一方で、ビジュアル面の改善はほんのわずかです。
ベント法線マップと Lumen を併用するには、次のように設定します。
- プロジェクトのコンフィギュレーション ファイル「DefaultEngine.ini」の
[SystemSettings]
セクションでr.GBufferDiffuseSampleOcclusion=1
を設定し、エディタを再起動します。 - Bent Normal カスタム出力ノードに出力するマテリアルを設定します。