Unreal Engine 5 の動的なグローバル イルミネーション Lumen が実現する機能を紹介します
2022年5月27日
Lumen
Unreal Engine 5
アニメーション
アート
デザイン
バーチャルプロダクション
レイトレーシング
技術ブログ
機能
Lumen は
Unreal Engine 5
の完全に動的なグローバル イルミネーションおよび反射のシステムです。この機能はすぐに利用できます。次世代コンソールや、ゲーム以外にも建築ビジュアリゼーションなど、ハイエンドのビジュアライゼーションのために設計されています。ここでは Lumen の機能について説明し、その技術的な詳細について概要を示します。完全なリファレンスについては、
Lumen のドキュメント
を参照してください。
グローバル イルミネーション
光が光源を離れるとき、光はその光源から見えるサーフェスすべてを照らします。これは、コンピュータ グラフィックスでは直接ライティングとして知られています。ただし実世界では、そこで光が止まることはありません。光は表面をバウンスし、その表面の色を映しながら進みます。粗いサーフェスからあらゆる方向にバウンスした光は、ディフューズ間接ライティングやグローバル イルミネーションと呼ばれています。スムーズなサーフェスから鏡面的にバウンスした光は、反射と呼ばれています。最終的に、光はあなたの目、またはカメラに到達し、像を形成します。
以前、ほとんどのゲームのグローバル イルミネーションは、ライトマップ ベイキングと呼ばれるオフラインの処理で解決する必要がありました。リアルタイムで計算するには、計算の負荷が高くてできなかったためです。Unreal Engine では、ライトマップは
CPU ライトマス
または
GPU ライトマス
を使用してベイクされます。ライトマップからの静的ライティングは高い品質を実現できますが、ビルド時間が長くなる場合があるため、ゲーム環境を大幅に制限します。壁に取り付けたテレビを移動させるなど、間接ライティングを大きく変化させるようなアクションを行うと、ライティングが適切でない状態のままになってしまいます。
このようなダイナミックなシーンが必要なゲームでは、低品質の放射照度の調査に基づくライティングやアンビエント オクルージョンのような近似手法が利用されてきました。ベイクされたライティングに品質面で匹敵するグローバル イルミネーションについては、依然として模索が続いています。
Lumen は、シーンを中心として光の跳ね返りをリアルタイムでシミュレーションするため、自動的に更新される間接ライティングによってプレイヤーはゲームのワールドのどのような側面も変更できます。プレイヤーは、レベルの大部分を破棄したり、時間帯を変更したり、レベルの一部に多くのライティングを行ったりすることができます。また、こうした変更は自動的にライティングに伝播します。ゲーム デベロッパーは、「LIGHTING NEEDS TO BE REBUILT (ライティングには、再ビルドが必要です)」のメッセージが Unreal Editor に表示されるのを見なくて済むようになります。
Your browser does not support HTML5 video.
Lumen は、カラー ブリーディングや間接シャドウなどのエフェクトを含む、高品質のグローバル イルミネーションという課題を解決します。Lumen は、無限のディフューズ バウンスをサポートします。これは、以下のシーンの白いペンキのような、明るいサーフェスが存在するシーンで重要です。
UE4Arch の Rafael Reis
Lumen はグローバル イルミネーションに対応するだけでなく、屋内環境を屋外環境よりも暗くするスカイ シャドウイングにも対応します。
下のランプや窓のようなエミッシブ マテリアルからのライティングも追加負荷なしで伝播します。ノイズ アーティファクトが発生する前にどのくらい放射領域を小さくかつ明るくできるかについては制限があります。エミッシブ ライティングは、手動で配置された光源よりも本質的に問題の解決がはるかに難しいものです。
また、低品質ではあるものの、Lumen は透過や
ボリュメトリック フォグ
のグローバル イルミネーションにも対応します。以下では、エミッシブな看板のメッシュが動的にボリュメトリック フォグをライトアップしています。
反射
Lumen は、任意のラフネスのサーフェスから離れる反射に動的に対応します。これは、
反射キャプチャ
などの事前計算された形式の反射や
平面反射
や
スクリーン スペース反射
などの制限された手法を置き換えるものです。
ただし、ダイナミックなグローバル イルミネーションがあれば、カメラから直接見えるものすべてに十分に対応できるというわけではありません。そこで、Lumen は反射に映る動的な GI やシャドウのあるスカイライトにも対応します。
Lumen の反射は、外側のコーティングで鏡面反射が発生する自動車の塗装など、コーティング マテリアルにも、また内部のレイヤーの光沢のある反射にも対応します。
Model courtesy of Audi
Lumen のレイ トレーシング
Lumen は、これらのライティングの特徴を解決するためにレイ トレーシングを使用します。また、レイの交差を高速化するためにシーンの近似バージョンを使用します。このシーンは、Lumen シーンの表示モードを切り替えることで視覚化できます。このビューは、グローバル イルミネーションおよび反射の際に Lumen が「見ている」ものを示します。
デフォルトでは、Lumen は
ソフトウェア レイ トレーシング
と呼ばれる手法により、メッシュ距離フィールドを使用します。これは、Lumen ではレイ トレーシングにハードウェア サポートに対応したビデオ カードが必要ないためです。ディスタンス フィールドでは、メッシュのサーフェスとレイが非常に高速に交差するように表現されます。
また、ソフトウェア レイ トレーシングではメッシュがグローバル ディスタンス フィールドにマージされます。これによって、手動で配置された
Megascans
の場合に起きやすい、メッシュが多数重なるような場合でも非常に高速なレイの交差が実現されます。Epic のテクノロジー デモである「
Lumen in the Land of Nanite
」と「
古代の谷
」では、多数のメッシュが重なっているため、グローバル ディスタンス トレーシングのみを使用しています。
Lumen では、プロジェクトの設定によって
ハードウェア レイ トレーシング
も使用できます。ハードウェア レイ トレーシングの方が正確ですが、スキン メッシュなど、より多くのジオメトリ タイプが表現され、負荷が余分にかかります。鏡面反射には、ハードウェア レイ トレーシングが必要です。
UE4Arch の Rafael Reis
The Matrix Awakens: An Unreal Engine 5 Experience
テクノロジー デモでは、背の高い都市のビルが太陽の光を遮り、画面のほとんどのライティングは Lumen で実現しています。
このデモの Lumen ではハードウェア レイ トレーシングを使用し、高品質な反射、スキン メッシュ、および広範囲な視界を実現しました。
サーフェス キャッシュ
レイがサーフェスに到達すると、Lumen によってマテリアルと入射するライティングを評価する必要があります。これをレイの最後にそれぞれ処理すると負荷が高くなり非効率的です。複数のレイが同じポイントに到達する可能性があり、またマテリアルにも多数のテクスチャのルックアップが生じる可能性があります。Lumen では、このライティングを
サーフェス キャッシュ
にキャッシュします。この機能はデフォルトで有効になっています。
Lumen では、各メッシュをキャプチャする方向を選択することでサーフェス キャッシュの入力を開始し、サーフェス全体に対応します。プレイヤーがワールド内を動くに従って、Lumen は継続的に近くのメッシュのマテリアルの属性をサーフェス キャッシュのアトラスに再キャプチャします。
Nanite 仮想化ジオメトリ
システムは、特にポリゴン数が多い場合など、これらのメッシュのレンダリングを大幅に加速しますが、Lumen で必須というわけではありません。その後、反射の際に発生するマルチバウンスのグローバル イルミネーションやシャドウ付きのスカイライトの計算を含め、これらのサーフェスがライティングされます。これでサーフェス キャッシュのライティングの準備が整い、グローバル イルミネーションや反射などの機能を加速することができます。
サーフェス キャッシュは Lumen の重要な最適化機能ですが、コンテンツについては考慮事項もあります。特に、シンプルな内部のメッシュのみに対応しています。壁、床、天井はすべて別々のメッシュにする必要があります。家具を含む部屋全体を単一のメッシュとしてインポートしても、Lumen では機能しないと考えられます。
[Surface Cache (サーフェス キャッシュ)] 表示モードは、対応していない場合はピンク色になります。このような領域では反射は黒色で表示されます。また、Lumen 画面のトレースだけが有効になるため、表示に依存するグローバル イルミネーションのみが有効になります。
ファイナル ギャザーとノイズ除去
レイ トレーシングは非常に負荷が高い処理であるため、あまり多くのレイのトレースはできません。同時に、画面上のピクセルすべてでシーン内の他のすべてのサーフェスからのライティングを考慮する必要があります。そのため、「グローバル」イルミネーションという名前が付けられています。すべての方向のレイをトレースすることはできないため、小さいサブセットを選択する必要があります。重要な方向が抜けていると、最終的なイメージでノイズ アーティファクトとして表示されます。そのため、レイのトレースを行う方向については十分に検討し、可能であればその少数のトレースを再利用する必要があります。
ディフューズのグローバル イルミネーションでは、Lumen は
放射輝度キャッシュをベースとした高度なファイナル ギャザー アルゴリズム
を使用しており、これは Siggraph 2021 で紹介されました。
Lumen のファイナル ギャザーでは、画面領域の放射輝度キャッシュを使用し、メイン画面からのグローバル イルミネーションの計算が大幅にダウンサンプリングされます。ダウンサンプリングされた間接ライティングは、フル解像度のマテリアル データと統合され、フル解像度のシェーディングが生成されます。
入射するライティングはこの放射輝度キャッシュ内でフィルタリングされるため、大幅にノイズが低減されてスムーズになり、貴重なトレースは隣接するピクセル間で再利用されます。ここではまだダウンサンプリングされた放射輝度キャッシュ領域で処理を行っているため、これは画面領域のノイズ除去とは異なる処理であり、はるかに効率的です。
Lumen では、レイをトレースする方向が非常に慎重に選択されます。入射するライティングの「重要度サンプリング」と呼ばれる手法が使用され、最後のフレームのライティングが明るい方向がチェックされます。前のフレームのライティングは、このフレームのライティングを検索しやすくするために利用されます。これにより、4 倍の数のレイでトレースを行ったのと同等の品質を得られると同時に、実行もはるかに高速になります。以下のスクリーンショットの白いレイは、重要度サンプリングを使用して選択されたものです。
最終的に、Lumen では近距離のライティングと遠距離のライティングが分離され、より多くのレイをトレースして遠距離のライティングでのノイズを低減します。この手法は、ワールド領域の放射輝度キャッシュと呼ばれます。屋内の部屋が小さい窓からのスカイ ライティングによってライティングされている場合、これは非常に重要であり、Lumen の室内での品質の鍵となります。
粗いサーフェスでの反射の場合、Lumen では画面領域の放射輝度キャッシュを再利用するため、追加の負荷はありません。また、Lumen ではこの手法により、負荷を倍増させることなく自動車の塗装などのクリア コート マテリアルで第 2 の反射レイヤーを実現できます。
UE4Arch の Rafael Reis
滑らかなサーフェス上の反射では、反射したライトを見つけるためにさらにレイがトレースされます。これらのレイによって見つかったライティングは、隣接するピクセルに共有され、ノイズを低減するためにフレーム全体で一時的に蓄積されます。
これらのサンプリングとノイズ低減の手法すべてを組み合わせて適用することが、Lumen の品質やパフォーマンスにとって非常に重要です。Lumen は直接ライティングを目的とするものではありません。しかし、そのファイナル ギャザーによる品質のおかげで、場合によってはエミッシブ メッシュを使用してシーン全体をライティングすることも可能です。
The Matrix Awakens: An Unreal Engine 5 Experience
では、実験的なナイト モードで Lumen によるグローバル イルミネーションおよび反射が使用され、窓のエミッシブ メッシュからの数百万ものライトを伝播しました。アーティストによって配置された光源はありませんでした。
パフォーマンスと品質
Lumen は、
テンポラル アップサンプリング
と、Unreal Engine 5 の 4K 出力用のテンポラル スーパー解像度を活用しています。極端に低い品質設定を使用して Lumen を 4K のネイティブで実行するのではなく、このようにすることで最善の映像品質が確保されます。
次世代コンソールで Lumen を使用し、グローバル イルミネーションと反射にエンジンで高いスケーラビリティ レベルを活用すれば 60 FPS を実現できますが、これらの設定での品質についてはまだ進行中の課題となっています。
その他の方向性として、Lumen では次のようにすることで品質面の拡張を実現できます。
ポストプロセス ボリューム設定で
ファイナル ギャザー品質
を高くする
ハードウェア レイ トレーシングを使用する
レイがサーフェスにヒットする際にサーフェス キャッシュではなく
ヒット ライティング
を利用して品質を高める
設定を向上することで、Lumen は建築ビジュアライゼーション向けの高品質でリアルタイムのグローバル イルミネーションと反射を提供します。
UE4Arch の Rafael Reis
最後に
この Lumen の機能と内部の仕組みに関するまとめがお役に立てば幸いです。Lumen はまだ開発中であるため、弊社では改善を目指して尽力しています。特に、次世代コンソールでは 60fps の制限内で実行する際のパフォーマンスと品質が向上するように取り組んでいます。また、そのユースケースを自動車、バーチャル プロダクション、ムービーのレンダリングへと拡大する予定です。
今すぐ Unreal Engine 5.0 をダウンロードしてください。
既存の Unreal Engine ユーザーは、
Epic Games Launcher
から Unreal Engine 5.0 をダウンロードできます。Unreal Engine を初めて利用する場合は、以下のリンクをクリックして利用を開始してください。どちらの場合も、すべての新機能とアップグレードをお楽しみください。また、フィードバックはいつでもお寄せください。
今すぐ始める