メインコンテンツへスキップ
Tech Playground
ゲーム開発

UE5 Lumenグローバルイルミネーション実装ガイド

Unreal Engine 5のLumenによるリアルタイムグローバルイルミネーションの仕組みと実装手順を解説。Surface Cache、SDF、MegaLightsまで網羅した2026年最新ガイド

約10分で読めます

Lumenとは何か|リアルタイムグローバルイルミネーションの革命

Unreal Engine 5のLumenは、完全動的なグローバルイルミネーション(GI)とリフレクションシステムです。従来のゲーム開発では、間接光の表現にはライトマップのベイクが不可欠でした。数時間かけて事前計算し、それでも動的な光源の変化には対応できないという根本的な制約がありました。

Lumenはこの問題を、ソフトウェアレイトレーシングとSurface Cacheの組み合わせで解決しました。プレイヤーが壁を破壊しても、時刻を変更しても、間接光がリアルタイムに追従します。Fortnite Chapter 4以降のタイトルで実証済みのプロダクションレベルの技術です。

2026年現在、UE5.7ではMegaLightsがBetaに昇格し、ハードウェアレイトレーシングへの移行が加速しています。本記事ではLumenの内部アーキテクチャから実装手順、最適化まで体系的に解説します。

Lumenのアーキテクチャ|3層構造で実現するリアルタイムGI

Lumenの動作を理解するには、3つの中核コンポーネントを把握する必要があります。

Surface Cache(サーフェスキャッシュ)

Surface Cacheは、シーン内の全マテリアルの低解像度レンダリング結果をキャッシュしたデータ構造です。各メッシュの表面をカード(Card)と呼ばれる6方向の投影面に分割し、アルベド・法線・エミッシブ・深度を格納します。

このキャッシュによって、レイがヒットした地点のシェーディング結果を高速に取得できます。フル解像度でマテリアルを評価する必要がなくなるため、レイあたりのコストが大幅に削減されます。

// Surface Cacheの可視化コマンド(エディタで実行)
// コンソールコマンドで確認可能
r.Lumen.Visualize 1
ShowFlag.VisualizeLumenScene 1

Signed Distance Field(SDF)レイトレーシング

Lumenのデフォルトのトレーシング方式は、Signed Distance Field(SDF)を使ったソフトウェアレイトレーシングです。SDFは空間内の各点から最も近いサーフェスまでの距離を記録したボリュームデータで、2種類が使われます。

  • Mesh Distance Field(MDF): 個々のメッシュごとのSDF。メッシュインポート時に自動生成される
  • Global Distance Field(GDF): シーン全体を低解像度で統合したSDF。遠距離のトレーシングに使用される

レイマーチング(スフィアマーチング)では、現在位置のSDF値が「次に安全に進める距離」を示すため、表面に近づくにつれてステップが自動的に小さくなります。これにより、BVHベースのレイトレーシングよりも低コストで広範囲のトレースが可能です。

Screen Space Radiance Cache

画面空間に配置されたプローブ(通常16x16ピクセルのブロックに1つ)が、周囲の放射輝度をサンプリングします。各プローブは32本のレイを発射し、結果をオクタヘドラルマップとしてアトラスに格納します。

この3層構造を図にすると以下のようになります。

[Screen Probe Grid] → [Ray Marching (SDF)] → [Surface Cache Hit]
      ↓                        ↓                      ↓
  画面空間で配置      距離場をマーチング      低解像度シェーディング取得

  [Radiance Cache] → 最終GI結果として合成

Lumenグローバルイルミネーションの実装手順

プロジェクト設定

UE5でLumenを有効化するための基本設定です。

// Project Settings での設定項目
// Edit > Project Settings > Engine > Rendering

// Global Illumination Method: Lumen
r.DynamicGlobalIlluminationMethod=1

// Reflection Method: Lumen
r.ReflectionMethod=2

// Software Ray Tracing(デフォルト)
r.Lumen.HardwareRayTracing=0

// Hardware Ray Tracing を有効化する場合
r.Lumen.HardwareRayTracing=1
r.RayTracing.Enable=1

プロジェクト設定のRendering セクションから、Global Illumination MethodをLumenに、Reflection MethodもLumenに設定します。これだけで基本的なLumen GIが動作します。

ポストプロセスボリュームでの調整

シーンごとの微調整はPost Process Volumeで行います。

// Post Process Volume の Lumen GI 設定
// Blueprint / C++ でアクセスする場合

UPostProcessComponent* PPComp = PostProcessVolume->FindComponentByClass<UPostProcessComponent>();

// Lumen GI の品質設定
FPostProcessSettings& Settings = PPComp->Settings;
Settings.bOverride_LumenSceneLightingQuality = true;
Settings.LumenSceneLightingQuality = 1.0f;  // 0.0〜4.0(高いほど高品質・高負荷)

Settings.bOverride_LumenSceneDetail = true;
Settings.LumenSceneDetail = 1.0f;  // SDFの詳細度

Settings.bOverride_LumenSceneViewDistance = true;
Settings.LumenSceneViewDistance = 20000.0f;  // GIの有効距離

Settings.bOverride_LumenFinalGatherQuality = true;
Settings.LumenFinalGatherQuality = 1.0f;  // Final Gatherの品質

エミッシブマテリアルによる間接光

Lumenの大きな強みの一つが、エミッシブマテリアルからの間接光です。ネオンサインや溶岩のような発光体が周囲を照らす効果をベイクなしで実現できます。

// マテリアルBlueprintでのエミッシブ設定
// Emissive Color に高い輝度値を設定
EmissiveColor = BaseColor * EmissiveIntensity;  // 10.0〜100.0推奨

// C++でマテリアルパラメータを動的に変更
UMaterialInstanceDynamic* DynMat = Mesh->CreateDynamicMaterialInstance(0);
DynMat->SetScalarParameterValue(TEXT("EmissiveIntensity"), 50.0f);

エミッシブの強度が高すぎるとRadiance Cacheにノイズが入るため、10〜100程度の値から調整することを推奨します。

UE5.5以降のMegaLightsによる進化

UE5.5で導入されたMegaLightsは、直接照明のレンダリングパイプラインを根本から再設計した実験的機能です。従来のDeferred Shadingでは、動的シャドウキャストライトが増えるとフレーム時間が線形に増加しました。MegaLightsは固定予算方式を採用しています。

MegaLightsの特徴

  • 固定GPU予算: ライト数に関係なく、GPUコストがほぼ一定
  • 数百のシャドウキャストライト: アーティストがパフォーマンスを気にせず自由にライティング可能
  • テクスチャードエリアライト: ソフトシャドウ、ライティングファンクション、メディアテクスチャ対応
  • ボリュメトリックシャドウ: コンソールとPCの両方で利用可能
// MegaLightsの有効化(UE5.5以降)
r.MegaLights=1
r.MegaLights.ShadowRays=1

// 品質調整
r.MegaLights.ScreenTraces=1
r.MegaLights.DownsampleFactor=2  // 1=フル解像度、2=半解像度

UE5.7でのLumenの方向性

UE5.7ではLumenの方向性に大きな変化がありました。ソフトウェアレイトレーシングの「Detail Traces」が非推奨となり、60fpsでのハードウェアレイトレーシングに注力する方針が明確になっています。MegaLightsもBetaステータスに昇格しました。

パフォーマンス最適化のベストプラクティス

Lumen GIは中〜高性能GPUで2〜5msのコストがかかります。以下の手法で最適化できます。

Radiance Cacheの最適化

// Radiance Cacheの更新頻度を制御
r.Lumen.ScreenProbeGather.RadianceCache.ProbeUpdateBudget=8  // デフォルト8、下げると軽量化
r.Lumen.ScreenProbeGather.DownsampleFactor=16  // プローブの配置密度(大きいほど軽い)

// Translucent Radiance Cacheの最適化(UE5.5以降)
// 不透明パスとトランスルーセントパスのキャッシュ更新をオーバーラップ
// GPU使用率が低い区間を活用し、ほぼ無料で処理可能
r.Lumen.TranslucencyVolume.Enable=1

Screen Traceの最適化

// Screen Traceの設定(近距離はスクリーン空間で処理し高速化)
r.Lumen.ScreenProbeGather.ScreenTraces=1  // 有効化
r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal=1  // HZB利用

// Full Res Traceは負荷が高いため、必要な場合のみ有効化
r.Lumen.ScreenProbeGather.FullResolutionJitterWidth=1

コンテンツ側の最適化

コンソールコマンドだけでなく、コンテンツ制作のガイドラインも重要です。

  • メッシュサイズ: 非常に小さいメッシュ(数cm以下)はSDFの精度が低下するため、可能な限りマージする
  • 薄い壁: SDFは体積を持つため、ペーパーシンジオメトリでは光漏れが発生する。壁の厚みは最低10cm推奨
  • Lumen Scene Detail: 遠距離の小さなオブジェクトがGIに寄与しない場合、LumenSceneDetailを下げることでトレースコストを削減
  • Two-Sided Foliage: 植生はTwo Sidedを有効にしないとSDFが正しく生成されない

ハードウェアレイトレーシングとの使い分け

ソフトウェアRT(SDF)とハードウェアRT(DXR/Vulkan RT)は排他ではなく、組み合わせて使えます。

項目ソフトウェアRTハードウェアRT
必要GPURTコア不要RTコア搭載GPU
品質良好(SDF解像度依存)高品質(正確なジオメトリ)
コスト2〜3ms3〜5ms
スキンメッシュ非対応対応
小さい穴・隙間SDF精度に依存正確に表現
推奨用途コンソール、幅広いハードウェアハイエンドPC、シネマティクス

2026年の状況としては、PS5・Xbox Series X向けタイトルではソフトウェアRTが主流ですが、PC向けの高画質モードではハードウェアRTを併用するのが一般的です。UE5.7でのDetail Traces非推奨化は、将来的にハードウェアRTが標準になることを示唆しています。

デバッグと問題解決

Lumen実装時によく遭遇する問題と対処法をまとめます。

光漏れ(Light Leaking)

最も頻出する問題です。SDFの解像度不足や薄いジオメトリが原因です。

// 光漏れの診断コマンド
r.Lumen.Visualize 1                              // Lumenシーンの可視化
r.DistanceFields.Visualize 1                      // SDF の可視化
r.Lumen.ScreenProbeGather.VisualizeTraces 1       // トレース結果の可視化

壁の厚みを10cm以上にする、メッシュのDistance Field Resolution Scaleを上げる、といった対処が有効です。

フリッカー・ノイズ

Radiance Cacheの更新が追いつかない場合に発生します。LumenFinalGatherQualityを上げるか、LumenSceneLightingQualityを調整してください。動きの速いカメラでは特に顕著になるため、シネマティクスではTemporalフィルターの強度も検討します。

まとめ

  • LumenはSurface Cache + SDF レイマーチング + Screen Radiance Cacheの3層構造でリアルタイムGIを実現する
  • UE5.5のMegaLightsで数百の動的シャドウキャストライトが固定予算で利用可能になった
  • UE5.7ではソフトウェアRTからハードウェアRTへの移行が加速し、MegaLightsがBetaに昇格
  • パフォーマンス最適化はRadiance Cacheのプローブ密度と更新予算の調整が最も効果的
  • 光漏れ防止にはジオメトリの厚み確保(10cm以上)とSDF解像度の適切な設定が不可欠
  • コンソール向けはソフトウェアRT、ハイエンドPCではハードウェアRT併用が2026年の標準的な構成
#Unreal Engine 5 #Lumen #グローバルイルミネーション #リアルタイムレンダリング
シェア: