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

Unreal Engine 5 の Lumen の動的なグローバル イルミネーションおよび反射のシステムの概要です。

Windows
MacOS
Linux

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

Lumen を使い始める

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

Unreal Engine 4 を使用して作成されたものなどの既存のプロジェクトの場合、Lumen は自動的に有効になりません。これらのプロジェクト内にあるライティング パスの破損や変更を防ぐためです。

Lumen は、[Project Settings (プロジェクト設定)] にある [Rendering (レンダリング)] > [Dynamic Global Illumination (ダイナミック グローバル イルミネーション)] カテゴリで有効にできます。[Dynamic Global Illumination] の [Method (メソッド)][Lumen] に設定します。また、[Reflection (反射)] の [Method][Lumen] に設定し、Lumen のソフトウェア レイ トレーシング モードに必要となる [Generate Mesh Distance Fields] も有効にします。

projectsettings_gettingstarted.png

Lumen のグローバル イルミネーションは、これまでの Screen Space Global Illumination (SSGI) および Distance Field Ambient Occlusion (DFAO) を置き換えるものです。つまり、Unreal Engine 4 の Screen Space Reflections が Lumen の反射に取って代わられます。

[Generate Mesh Distance Fields] を有効にするには、エンジンを再起動する必要があります。Lumen の GI と反射は、エディタを再起動せずに有効 / 無効にできます。そのため、動的なグローバル イルミネーションと反射がある場合とない場合の比較がやりやすくなっています。

Lumen に関係するすべてのプロジェクト設定については、このページの「Lumen のプロジェクト設定」セクションを参照してください。

Lumen を有効にすると、静的ライトの寄与が無効になり、すべてのライトマップが非表示になります。

Lumen のライティングの特徴

Lumen は、Unreal Engine における初めての堅牢な動的グローバル イルミネーションで、Nanite などの UE5 にある他のサポート システムとうまく連携します。

Unreal Engine 4 では、スクリーン空間グローバル イルミネーション などの機能は不安定で、レイ トレーシング グローバル イルミネーション (RTGI) も高品質なゲームではパフォーマンスが低く、他の重要なシステムと連携できませんでした。

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 を示しています。

Lumen_SkyLight.png

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

概して、Lumen は Unreal Engine 5 の早期アクセス版で以下をサポートしています。

  • すべてのライトのタイプ がサポートされています。これには、指向性ライト、スカイライト、ポイント ライト、スポット ライト、および矩形ライトが含まれます。

  • ライト関数 は、指向性ライトでのみサポートされています。

  • 静的ライトはライトマップに完全に保存され、Lumen によってその寄与が無効になっているため、ライトが Mobility (可動性) が [Static (静的)] に設定されている場合、サポートされません。

Lumen の設定

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

プロジェクト設定

Lumen のプロジェクト設定は、[Rendering (レンダリング)] セクションにあります。ここで Lumen のデフォルト設定を調整します。

ProjectSettings_Lumen.png

Lumen は、ダイナミック グローバル イルミネーション メソッド反射メソッド を選択したプロジェクトで有効になります。

プロジェクト設定には、Lumen に影響を与える次の他のデフォルト設定も含まれています。

  • [Software Ray Tracing Mode] では、トレースの実行方法に関するオプションを選択できます。

  • 個々のメッシュの距離フィールドに対して [Detail Tracing] でトレースすると、より高いパフォーマンス コストで最高品質のレンダリングを行えます。

  • グローバル距離フィールドに対して [Global Tracing] でトレースすると、最速な一方で低品質なレンダリングが可能になります。

  • [Use Hardware Ray Tracing when available] は、サポートされているハードウェアを使用してシーンのジオメトリに対してレイをトレースします。それ以外でこれらの基準が満たされない場合は、デフォルトで Lumen のソフトウェア レイ トレーシングになります。Hardware Ray Tracing Scene を更新するために Support Hardware Ray Tracing が必要です。早期アクセスの場合、数万のインスタンスがサポートされており、パフォーマンスはシステムハードウェアとプラットフォームの制限に大きく依存します。たとえば、一部のプラットフォームでは、40k 未満のインスタンスと 100k 以下のアニメーション化された頂点が推奨されます。今後のリリースで改善が行われます。

  • [Support Hardware Ray Tracing] を使用すると、サポートされているビデオカード、RHI、およびオペレーティング システムは、レイ トレーシング機能を使用してシーンのジオメトリに対してレイをトレースし、最高品質を実現できます。

  • [Generate Mesh Distance Fields] は、個々のスタティック メッシュの距離フィールド表現を生成します。これは、Lumen でのソフトウェア レイ トレーシングに必要となります。また、移動可能なスカイ ライトと指向性ライトを備えた距離フィールドを用いる、他の動的ライティングおよびシャドウイング方法でも使用されます。

ポスト プロセス設定

ポストプロセス ボリュームを使用すると、グローバル イルミネーション反射 のプロパティ セクションから Lumen に対してオーバーライドできるようになります。

PostProcessVolumeOverrides.png

[Method] プロパティは、ここでオーバーライドされない限り、プロジェクト設定で設定された選択された グローバル イルミネーション反射 メソッドを使用します。Lumen がプロジェクトのグローバル イルミネーションと反射のメソッドとなります。

それぞれの品質は、以下を使用して制御されます。

  • [Final Gather Quality] は、Lumen のグローバル イルミネーションの品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングの GPU コストを増加させます。

  • [Quality] は、サーフェス上の Lumen の反射の品質を向上させ、レンダリングされるノイズを低減しますが、レンダリングの GPU コストを増加させます。

追記

以下では、プロジェクトで Lumen 機能を使用する際に留意すべきいくつかの追加の考慮事項を説明します。

Lumen のライティングの更新速度

Lumen は、リアルタイムでの良いパフォーマンスを実現するために多くのキャッシュを使用しています。ローカル ライティングを変更した場合はすばやく反映されますが、太陽を無効にするといったグローバル ライティングの変更の場合は、反映されるまでに数秒かかることがあります。

プロジェクトの静的ライトを無効にする

Lumen を使用すると、静的ライトから事前に計算された照明が削除されます。[Project Settings] にある [Allow Static Lighting (静的ライトを許可)] の横にあるチェックボックスをオフにすると、プロジェクトにある事前計算されたライティングを完全に無効にできます。

静的ライトを無効にすると、シェーダの順列によって発生する静的ライトのオーバーヘッドも少なくできます。また、マテリアル アンビエントオクルージョン の入力が可能になり、マテリアル ベント法線 が Lumen グローバル イルミネーションと連携できるようになります。

静的ライトを使用するプロジェクトでは、レベルの [World Settings (ワールドセッティング)] で [Force No Precomputed Lighting (事前計算されたライティングなしを強制)] を有効にするまで、ライトマップがメモリとディスクに読み込まれます。その際は、ライティングを再ビルドしてレベルを保存する必要があります。

マテリアル ベント法線

Lumen のグローバル イルミネーション は、スケルタル メッシュで信頼性の高いセルフ オクルージョンを提供する Material Bent Normal Maps をサポートしています。

Lumen でマテリアル ベンド法線を使用するには次を実行します。

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

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

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

Lumen_ScreenTraces.png

画面トレースが無効になっているスケルタル メッシュ上の Lumen GI (左)。

マテリアル ベント法線が設定されている (真ん中)。

マテリアル ベンド法線と画面トレースが再度有効になっている (右)。