Lumen のグローバル イルミネーションおよび反射

Lumen の動的なグローバル イルミネーションと反射機能の概要。

Choose your operating system:

Windows

macOS

Linux

Lumen は、次世代コンソール向けに設計された Unreal Engine 5 の完全に動的なグローバル イルミネーションおよび反射のシステムで、デフォルトのグローバル イルミネーションおよび反射システムです。Lumen は、大規模で詳細度の高い環境で、mm 単位から Km 単位までのさまざまなスケールで、無限のバウンスと間接スペキュラ反射を利用したディフューズ相互反射をレンダリングできます。

Lumen の使用を開始する

新しく作成されたプロジェクトでは、デフォルトで Lumen のグローバル イルミネーションと反射が、 Generate Mesh Distance Fields (メッシュ ディスタンス フィールドの生成 などの依存関係とともに、有効になっています。

Unreal Engine 4 から Unreal Engine 5 に変換された既存のプロジェクトでは、Lumen の機能は自動的に有効に なっていません 。これは、これらのプロジェクト内にあるライティング パスの破損や変更を防ぐためです。

Lumen は、[Project Settings (プロジェクト設定)] の [Rendering (レンダリング)] > [Dynamic Global Illumination (ダイナミック グローバル イルミネーション)] カテゴリおよび [Reflections (反射)] カテゴリで有効にすることができます。

projectsettings_gettingstarted.png

グローバル イルミネーションおよび反射は個別に設定することができます。Lumen を有効にするには、各カテゴリで次のように設定します。

  • Dynamic Global Illumination (ダイナミック グローバル イルミネーション):Lumen

  • Reflection Method (反射メソッド):Lumen

    有効にすると、まだ有効になっていない場合は、Generate Mesh Distance Fields プロパティが有効になります。これは、 ソフトウェア レイ トレーシング モードに必要です。エンジンを再起動する必要があります。

Lumen のグローバル イルミネーションは、 スクリーン空間グローバル イルミネーション(SSGI) および ディスタンス フィールド アンビエント オクルージョン(DFAO) に代わる機能です。また、Lumen の反射は、スクリーン空間反射に代わる機能です。

プロジェクトで Lumen を有効にすると、事前計算された静的ライトの影響が無効になり、すべてのライトマップが非表示になります。

Lumen のライティングの特徴

Lumen は、Unreal Engine に優れたダイナミック グローバル イルミネーション機能を追加します。また、Nanite、ワールド パーティション、仮想シャドウ マップなど Unreal Engine 5 に搭載されている他のサポート システムと適切に連携します。

スクリーン空間グローバル イルミネーション および レイ トレーシング グローバル イルミネーション (RTGI) などの Unreal Engine 4 の機能は、質の高いリアルタイム プロジェクトにおいては、信頼性やパフォーマンスが十分ではありませんでした。また、これらの機能は他の重要なシステムと完全には統合されておらず、エンジンのほとんどの機能を幅広くサポートすることができませんでした。

Lumen グローバル イルミネーション

Lumen グローバル イルミネーションはディフューズ間接ライティングの問題を解決します。たとえば、サーフェスからディフューズしてバウンスする光は、そのサーフェスの色を反映し、色の付いた光を他の近くのサーフェスに反射します。この効果はカラー ブリーディングと呼ばれます。シーン内のメッシュでは間接ライティングもブロックされますが、これにより、間接シャドウイングが生成されます。

LumenTechDemo_2.png

Lumen は、この室内の白いペンキのような明るいディフューズ マテリアルが存在するシーンで重要となる、無限のディフューズ バウンスが提供されます。

LumenGI_Apartment.png

Unreal Engine 5 の Nanite 仮想化ジオメトリ を使用すると、ジオメトリに対してこれまでにないディテールを追加することができます。Lumen は、フル解像度のシェーディングを表現できるだけでなく、リアルタイム時のパフォーマンス維持のためにはるかに低い解像度でも間接ライティングを計算できます。

LumenTechDemo_3.png

スカイ ライトと Lumen

スカイ ライトは、Lumen の ファイナル ギャザー プロセスの一部として解決されます。これには、屋外ライティングよりも屋内の空間を大幅に暗くさせることができるスカイ シャドウイングも含まれており、はるかに自然なエフェクトが得られます。

LumenTechDemo_1.png

Lumen は、 ライティングの透過処理ボリュメトリック フォグ のために、低品質のグローバル イルミネーションも提供しています。

shadowedfogvolume.png

Lumen とエミッシブ マテリアル

エミッシブ マテリアルは、Lumen のファイナル ギャザーを使用してパフォーマンスの負荷を増大させることなくライトを伝搬させることができます。ただし、ノイズ アーティファクトが発生する前にどのくらい放射領域を小さくかつ明るくできるかについては制限があります。これにより、手動で配置された光源よりも本質的に問題の解決がはるかに難しくなります。

Lumen_Emissive.png

Lumen の反射

Lumen は、マテリアルのラフネス値の全範囲で間接スペキュラまたは反射を解決できます。

LumenReflections.png

ディフューズしたグローバル イルミネーションとシャドウ付きのスカイライトが、すべての反射で見られます。Lumen の反射は、以下の車のサンプルのように、クリア コート マテリアルもサポートしています。

Lumen_SkyLight.png

Lumen は、以下の車の窓のサンプルのように、半透明の要素に光沢のある反射を与えます。

  • ミラー反射は現在サポートされていません。

lumen-glossy-reflections.jpg

サポートされているライトのタイプとその他の機能

Lumen がサポートしている機能の概要は次のとおりです。

  • ディレクショナル ライト、スカイ ライト、ポイント ライト、スポット ライト、および矩形ライトを含む、すべての ライト タイプ がサポートされています。

  • Mobility (可動性) が [Static (スタティック)] に設定されているライトはサポートされていません。静的ライトはライトマップに完全に格納されており、Lumen が有効な場合、静的ライトの影響が無効になるためです。

Lumen の設定

Lumen の設定は、[Project Settings (プロジェクト設定)] および **ポストプロセス ボリューム**にあります。

Lumen のプロジェクト設定

Lumen に関するまたは Lumen に影響するプロジェクト設定は、 [Engine (エンジン)] > [Rendering (レンダリング)]** セクションにあります。[Project Settings] にはプロジェクトの Lumen のすべてのデフォルト設定が含まれています。

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 (反射用のライティングを当てる)] に設定することができます。

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] カテゴリにあります。

PostProcessVolumeOverrides.png

以下は、ポストプロセス ボリュームにある Lumen のすべての設定のリストです。

プロパティ名

説明

Global Illumination (グローバル イルミネーション)

Lumen Scene Lighting Quality

スケールを大きくすると、Lumen シーンがより高い忠実度で計算され、ライティングが反射で表示できるようになりますが、GPU の負荷が増大します。

Lumen Scene Detail

Lumen シーンで表示できるインスタンスのサイズを制御します。値を大きくすると、小さなオブジェクトも確実に表示できるものの、GPU の負荷が増大します。

Lumen Scene View Distance

Lumen がレイ トレーシングに対して保持するシーンの最大表示距離を設定します。値を大きくするとスカイ シャドウイングやグローバル イルミネーションの有効範囲が広がりますが、GPU 負荷が増大します。

Final Gather Quality

Lumen のグローバル イルミネーションの品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングにおける GPU の負荷が増大します。

Max Trace Distance

ライティングを解決するときに Lumen がトレースする最大距離を制御します。値が小さすぎると、洞窟などの広い範囲にライティングが漏れます。大きな値を設定すると、シーンのレンダリングにかかる GPU の負荷が増大します。

Lumen Scene Lighting Update Speed

パフォーマンスを向上させるために、Lumen シーンがライティング結果をキャッシュする量を制御します。スケールが大きいほど、ライティングの変化がより迅速に伝搬されますが、GPU の負荷が増大します。

Final Gather Lighting Update Speed

パフォーマンスを向上させるために、Lumen ファイナル ギャザーがライティング結果をキャッシュする量を制御します。スケールが大きいほど、ライティングの変化がより迅速に伝搬されますが、GPU の負荷が増大します。

Quality

サーフェス上の Lumen の反射の品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングにおける GPU の負荷が増大します。

Ray Lighting Mode

Lumen によるハードウェア レイ トレーシング](building-virtual-worlds\lighting-and-shadows\global-illumination\lumen\TechOverview#ハードウェアレイトレーシング) を使用している場合、この設定は、反射がサーフェス キャッシュを再利用して負荷の低いライティングを行うか、ヒット ポイントでライティングを計算してより高い品質を実現するかを制御します。

追記

以下では、プロジェクトで 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 と併用するには、次のように設定します。

  • [Project Settings] で [Allow Static Lighting (静的ライティングを許可)] を無効にして、GBuffer にスペースを作成します。

  • 出力するマテリアルを [Ambient Occlusion (アンビエント オクルージョン)] に設定します。

Lumen Material Ambient Occlusion

画面トレース (ソフトウェア レイトレーシング) のみのスケルタル メッシュ上の Lumen GI (左) とマテリアル アンビエント オクルージョン (右)

Lumen のグローバル イルミネーションは、マテリアルの ベンド法線マップ をサポートしています。ただし、これらはマテリアル アンビエント オクルージョンよりも大幅に負荷が高く、視覚的な改善はほとんどありません。

ベント法線マップを Lumen と併用するには、次のように設定します。

  • プロジェクトの DefaultEngine.ini コンフィギュレーション ファイルの [SystemSettings] セクションで r,GBufferDiffuseSampleOcclusion=1 を設定し、エディタを再起動します。

  • Bent Normal カスタム出力ノードに出力するマテリアルを設定します。