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

利用可能な事前計算された動的グローバル イルミネーション オプションについて学びます。

Windows
MacOS
Linux

グローバル イルミネーション (間接ライティング、間接イルミネーションとも呼ばれる) は、ジオメトリやマテリアルのサーフェスとライティングの相互作用をシミュレートし、シーンやプロジェクトにリアルなライティングを追加します。このシミュレーションでは、相互作用するマテリアルの吸収や反射も考慮されます。

3D ワールドにおける光の振る舞いのシミュレーションの処理は、次の 2 つ方法のいずれかで行われます。光の動きと動的ライティングの相互作用をサポートするリアルタイム ライティング手法を使用する方法か、ジオメトリのサーフェスに適用するテクスチャに事前計算された (ベイクされた) ライティング情報を格納して使用する方法です。Unreal Engine では、シーンのライティングを両方の方法で行うことができます。これらの方法は二者択一ではなく、2 つをシームレスにブレンドできます。

これらの用途と機能が理解しやすくなるよう、各システムの特徴を紹介します。

  • ライティングを変更する必要がないシーンに最適です。

  • パフォーマンス コストはライトマップ テクスチャのロードと格納に必要なメモリに比例します。

  • 結果の品質と正確性は、ベイクされジオメトリに適用されるライトマップ テクスチャのテクスチャ解像度によって決まります。

  • デフォルトでスタティック メッシュと BSP ジオメトリをサポートしています。

  • ライティング データを格納するために、スタティック メッシュでライトマップ UV の設定が必要です。

  • 動的ライティングと組み合わせて使用できます。

  • ライトのオンとオフの切り替えや時間帯システムを採用するなど、ライティングを変更する必要がある場合に最適です。

  • 大規模なオープンワールド環境では、(時間帯システムがないとしても) ライティングのベイクは実現困難な要件です。動的 GI を使用するうえで、ベイク時間、メモリ使用量、テクスチャ保存、再生が考慮要素になります。

  • パフォーマンス コストは、使用する手法によって、リアルタイム計算の方が大幅に高くなる可能性があります。

  • 品質と正確性は、多くの場合、パフォーマンスとトレードオフになります。一部の動的 GI 手法は、リアルタイム使用で制限されます。

  • デフォルトですべてのジオメトリ タイプをサポートしています。

  • 事前計算されたライティングと組み合わせて使用できます。

事前計算されたグローバル イルミネーション

Unreal Engine のライト ベイク システムには、ライトマスを使用してライティング データを計算する方法が 2 つあります。CPU で行う方法と、GPU で行う方法です。事前計算されたライティングを使用すると、リアルタイムでは不可能な高品質の結果を実現できます。ただし、ライティングを事前に生成して、ジオメトリに適用するテクスチャに格納するという特性から、ライティングを動的に変更することはできません。

事前計算されたライティングのワークフローを以下に説明します。

CPU ベースのライトマス システム

CPU ベースのライトマス システムでは、Unreal Swarm と呼ばれる個別のプロセスを使用して、ライティング データを計算、生成します。Unreal Swarm は、ライティングの分散にも使用されます。これにより、複雑なレベルを分割できるファームをビルドして、ビルド プロセスを完了します。これは CPU で処理されるため、最終的なライトマップ結果の生成には、ビルドを分散できる利用可能なスレッド数やマシン数が非常に重要です。複雑なシーンを 1 台のマシンで処理すると、処理完了までに長時間かかり、多くのコンピューティング パワーや RAM が使用されることになります。

このオプションの詳細については、「Lightmass グローバル イルミネーション」を参照してください。

GPU ベースのライトマス システム

この機能は ベータ 版です。この機能をビルドに含める場合はご注意ください。

ベータ版の機能は、その機能の仕組みを把握し、パイプラインを計画し、テスト コンテンツを作成する機会を開発者に提供するものです。シッピング品質のパフォーマンス、安定性、プラットフォーム サポートを目指して現在も開発を続けています。ベータ版の機能を本番環境で使用する場合にはご注意ください。なお、アセットの下位互換性はサポートされており、これらの機能の API は安定しています。

GPU ベースのライトマス (GPULM) システムでは、コンピュータの GPU を最新の DirectX 12 (DX12) とレイ トレーシング機能と組み合わせて使用し、ライティング データを計算して生成します。ライティングのビルドには、単一のエディタ内プロセスを使用します。Unreal Swarm を使用した分散ビルドはサポートしていませんが、SLI を通じて複数の GPU をサポートしています。

このシステムの詳細については、「GPU ライトマス グローバル イルミネーション」を参照してください。

動的グローバル イルミネーション

Unreal Engine の動的ライティング手法には、動的光源からの光を跳ね返らせることによってシーンを照らす各種リアルタイム グローバル イルミネーション ソリューションが用意されています。これらのソリューションによって、シーン内のオブジェクトに対するライティングを変更して、自動的に更新することができます。これにより、時間帯の推移や、室内の照明のオン/オフなどのシンプルな変化をシミュレートできます。ライティング システムの計算はリアルタイムで行われるため、システムを機能させるために必要な設定はほとんどありません。

スクリーン スペース グローバル イルミネーション

スクリーン スペース グローバル イルミネーション (SSGI) では、ポストプロセス スクリーン スペース エフェクトを使用して動的間接ライティングを生成します。この手法を利用してライティング データを生成できるのは、カメラ ビュー内のオブジェクトとライティングに限られます。明るいライトがビュー外にある場合やシーン内のオブジェクトによって遮られる場合には、期待外れの結果になる可能性があります。

この動的 GI 手法は、見栄えの良い結果を得るための相加効果として既存の動的 GI 手法や事前計算された GI 手法と組み合わせて使用すると最適です。

SSGI なしでベイクされたライティングのみを使用

SSGI あり

レイ トレースによるグローバル イルミネーション

Unreal Engine のレイ トレーシング機能には、Microsoft の DXR フレームワークと NVIDIA のレイ トレーシング対応の GPU を活用して物理的に正確なライティング結果をレンダリングする動的グローバル イルミネーション手法が含まれています。

サポートされているレイ トレーシング グローバル イルミネーション (RTGI) 手法は 2 つあります。

  • Brute Force 手法:パストレーサーのグラウンド トゥルース リファレンスをエミュレートします。リアルタイムでレンダリングする実行に非常に類似しています。フレーム パフォーマンスの消費が激しいですが、最も正確な動的グローバル イルミネーション手法が提供されます。

  • Final Gather 手法:2 パス アルゴリズムで、分散シェーディング ポイントとピクセルごとに一定数のサンプルを使用します。正確性を犠牲にして、高いパフォーマンスを発揮します。リアルタイムのパフォーマンスが必要なプロジェクトでは、Brute Force 手法のような正確性は得られませんが、フレーム計算余力で動的グローバル イルミネーションをサポートできます。

シーンライティングのみ

レイトレーシンググローバルイルミネーション|Bruce Force 手法を使用

これらの機能の詳細については、「リアルタイム レイトレーシング」を参照してください。

ライト プロパゲーション ボリューム

Unreal Engine 4.26 の時点でこの機能は非推奨となっているので、使用しないでください。この機能は、今後のバージョンでは削除されます。

ライト プロパゲーション ボリューム (LPV) は、配置されたボリュームを使用して、動的グローバル イルミネーションで参照、使用できるライティング データをサンプリングし、格納します。このボクセル ベースのアプローチでは、ボリューム内のグリッドを使用して間接ライティングの詳細と正確性を制御します。これにより、光漏れやその他のアーティファクトが少なくなります。このアプローチは、小規模~中規模のエリアに最適です。

LPV_scene.png

このシステムの詳細については、「Light Propagation Volumes」を参照してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる