ゲーム開発
Unity
UnrealEngine
C++
ゲーム数学
ゲームAI
サウンド
アニメーション
GBDK
制作日記
3DCG
Houdini
Blender
USD
グラフィックス
テクノロジ
ツール開発
フロントエンド関連
サーバサイド関連
ソフトウェア設計
ハードウェア関連
おすすめ技術書
音楽
DTM
楽器・機材
ピアノ
その他
都会のエレキベア
ラーメン日記
四コマ漫画
おすすめアイテム
おもしろコラム
  • ゲーム開発
    • Unity
    • UnrealEngine
    • C++
    • ゲーム数学
    • ゲームAI
    • サウンド
    • アニメーション
    • GBDK
    • 制作日記
  • 3DCG
    • Houdini
    • Blender
    • USD
    • グラフィックス
  • テクノロジ
    • ツール開発
    • フロントエンド関連
    • サーバサイド関連
    • ソフトウェア設計
    • ハードウェア関連
    • おすすめ技術書
  • 音楽
    • DTM
    • 楽器・機材
    • ピアノ
  • その他
    • 都会のエレキベア
    • ラーメン日記
    • 四コマ漫画
    • おすすめアイテム
    • おもしろコラム
  1. ホーム
  2. 20250504_01_ue_nanite_optimize

【UE5.5】Nanite、Lumen、VSMの概要についてまとめる

UnrealEngineグラフィックスNaniteLumenVirtual Shadow Map最適化
2025-05-12

マイケル
マイケル
みなさんこんにちは! マイケルです!
エレキベア
エレキベア
こんにちクマ~~~
マイケル
マイケル
今回は久しぶりにUnrealEngine5を触ります! UE5の中でも特に強力なグラフィックス機能である、 Nanite、Lumen、VSMについて簡単に触れていきます。
エレキベア
エレキベア
UE5の目玉となっていた機能クマね
マイケル
マイケル
これらの機能を活用した CitySample なんかは一時期話題になったよね。 UE5のリアルタイムグラフィックスのクオリティの高さはこれらの技術により実現されているといっても過言では無いと思います。
20250504_01_ue_optimize_01


エレキベア
エレキベア
こんな大量のオブジェクトをリアルタイム描画できるなんてすごいクマ~~
マイケル
マイケル
Nanite、Lumen、VSMの機能は相互に関係しあっていて、最適化含めグラフィックス機能を扱う上での知識として必要になります。 今回はそれぞれの機能の概要についてまとめて、雰囲気を掴んでみます!
エレキベア
エレキベア
楽しみクマ~~~

参考書籍・サイト

マイケル
マイケル
Nanite関連について詳しく触れている書籍は多くなく、公式ドキュメント以外だと下記スライドを参考にさせていただきました。 いずれも同じ著者が書かれていて、頻繁な更新が行われる機能をこのようにまとめていただけているのは非常にありがたいです!
エレキベア
エレキベア
丁寧に書いてくださってありがたいクマ~~~
マイケル
マイケル
書籍に関しては、自分の把握している範囲だと下記で触れていました。 初めに触るとっかかりとしてよさそうだったので貼っておきます!

Unreal Engine 5 リアルタイム ビジュアライゼーション 第2版

マイケル
マイケル
またグラフィックス周りの最適化については、下記書籍内で具体例をいくつか記載されていてとても参考になりました。 読んだことが無い方はこちらも見てみることをおすすめします!

背景アーティスト導きの書

各機能の概要

マイケル
マイケル
まずはざっくり、それぞれの機能概要を表でまとめてみました。 メリットや注意点、従来機能との比較はそれぞれ下記のようになります。
Nanite、Lumen、VSMの機能概要
機能
〇 メリット
△ 注意点
Nanite
・仮想化ジオメトリストリーミングにより高精細なメッシュを描画する
・自動で最適な詳細度(LOD)描画を行う
・Opaque、Maskedマテリアル以外は非対応
・Masked、WPO使用マテリアルはパフォーマンスが悪い
・スケルタルメッシュ描画は5.5で実験段階
・シャドウマップ非対応(VSM推奨)
Lumen
・ベイク無しで動的なGIを実現する
・Naniteジオメトリと相性が良い
・処理負荷が比較的高い
・残像が起きやすい
Virtual Shadow Map (VSM)
・VirtualTextureの仕組みを活用することで質の高いシャドウ描画を行う
・Naniteジオメトリと相性が良い
・処理負荷が比較的高い
Nanite、Lumen、VSMの従来機能との対応
機能
従来の機能
〇 優位性
Nanite
・LOD
・高ポリゴンのメッシュを最適化して描画できる
・メッシュ個別のLOD作成が不要
Lumen
・Lightmapによる焼き付け
・Screen Space Global Illumination (SSGI)
・Path Tracer
・リアルタイムにGIが行える
Virtual Shadow Map (VSM)
・シャドウマップ
・レイトレーシングのシャドウ
・距離フィールドシャドウ
・Lightmassによる自動計算されたシャドウ
・Naniteジオメトリに対応し、高品質
エレキベア
エレキベア
従来の機能を置き換えるような形になるのクマね これはグラフィックス周りにおいてかなり影響が大きい話クマ
マイケル
マイケル
それではこれらの機能を一つ一つ見ていきます!

Naniteの概要

Naniteとは

マイケル
マイケル
改めてになりますが、Naniteは 仮想化ジオメトリストリーミングにより高精細(高ポリゴン)のメッシュを効率的に描画する仕組み になります。 Lumen、VSMの処理にも大きな影響を与えるため、中核となる機能といっても過言ではないと思います。
エレキベア
エレキベア
仮想化ジオメトリストリーミングって何クマ?
マイケル
マイケル
ざっくりいうと、メッシュを分割して構築した階層構造を用いて、リアルタイムに適した詳細度でポリゴンを描画する処理になります。 数百万レベルの高ポリゴンメッシュをリアルタイムにLOD制御してくれるようなイメージだね。
20250504_01_ue_optimize_11
▲車のポリゴンメッシュを表した状態

20250504_01_ue_optimize_12
▲遠ざかるとポリゴン数が削減されていることが確認できる

エレキベア
エレキベア
そんな夢のような機能があるのクマね・・・ それがあればどんな重いメッシュも使い放題というわけクマか
マイケル
マイケル
とはいえNaniteにも苦手なメッシュや非対応のものもあるため注意が必要です。 簡潔にまとめると下記のようになります。
機能概要
機能
〇 メリット
△ 注意点
Nanite
・仮想化ジオメトリストリーミングにより高精細なメッシュを描画する
・自動で最適な詳細度(LOD)描画を行う
・Opaque、Maskedマテリアル以外は非対応
・Masked、WPO使用マテリアルはパフォーマンスが悪い
・スケルタルメッシュ描画は5.5で実験段階
UEバージョンによる変遷
UEバージョン
変更点
5.0
・Naniteの登場
5.2
・Maskedマテリアル、WPOの対応
5.3
・Nanite Tessellation (実験的機能)追加
5.5
・SkeletalMeshへの対応(実験的機能)追加
エレキベア
エレキベア
Makedマテリアル、WPOを使用したマテリアルはパフォーマンスが悪いのクマね 確かにこれは注意が必要そうクマ

Naniteの処理内容

マイケル
マイケル
Nanite及び仮想化ジオメトリがどのような処理になっているかというと、 メッシュをクラスタ単位に分割して階層構造を構築し、クラスタ単位で描画メッシュを切り替える ことでLODのような挙動を実現しているようです。 Nanite Visualizationから内容を確認することができ、CitySampleで区アスタとポリゴンを表示してみたものが下記になります。
20250504_01_ue_optimize_04
▲CitySampleの例のシーン

20250504_01_ue_optimize_05
▲Nanite Visualization > Clusters からクラスタを表示した状態

20250504_01_ue_optimize_06
▲Nanite Visualization > Triangles から分割されたポリゴンを表示した状態

エレキベア
エレキベア
カメラを動かすと動的に切り替わるのが確認できるクマね
マイケル
マイケル
処理自体は高度な内容になるため深くは触れませんが、下記動画で細かい内容を解説しているようなので興味ある方は見てみると面白いかもしれません。

参考: A Deep Dive into Nanite Virtualized Geometry | Youtube

エレキベア
エレキベア
うーむ、中々難しい内容クマね・・・
マイケル
マイケル
またProfilerで見た際にNanite処理がどこに当たるのかというと、主に下記4つが関係するようです。
20250504_01_ue_optimize_13
▲ProfileGPUで見た状態、Naniteに関連する箇所は赤枠部分

処理
概要
VisBuffer
・見えるメッシュのみに絞り、詳細度を決定する
LumenSceneSceneUpdate
・LumenSceneの更新を行う
BasePass
・VisBufferで求めた情報を元にMaterialを描画する
ShadowDepths
・VSMの計算を行う
マイケル
マイケル
実際に表示するメッシュを決定している部分はVisBufferの処理になっていて、Lumen、VSMにも影響していることが読み取れます。 この辺りは下記スライドで細かく解説いただいていました。

参考: Unreal InsightsとProfileGPUから見るLumenとNanite + 5.4までのアップデート

マイケル
マイケル
そしてその他、細かい情報を取得するためのコマンドが用意されています。 必要に応じて駆使するとよさそうです。
  • NaniteのShading情報表示
    • r.ShaderPrint 1
    • r.Nanite.ShowStats 1
20250504_01_ue_optimize_07
▲Shading情報の表示

  • 追加のVisualize機能使用
    • r.Nanite.Visualize.Advanced 1
20250504_01_ue_optimize_14
▲r.Nanite.Visualize.Advanced 1 に設定すると追加のVisualize機能が使用できる

  • ProfileGPUでシェーディング情報可視化
    • r.Nanite.ShowMeshDrawEvents 1
    • 各シェーディングパスもPrifileGPUで確認可能になるはずだが、UE5.4だと上手く確認できず・・・
エレキベア
エレキベア
各状態を可視化してくれるのはありがたいクマね

Naniteの設定方法

マイケル
マイケル
Naniteの設定方法は簡単で、インポート時に「Build Nanite」を有効にするか StaticMeshEditor上でも有効にすることが出来ます。 各種設定もここから行えますね!
20250504_01_ue_optimize_08
▲StaticMeshEditorからのNaniteの設定

各項目の設定内容:
Nanite のフォールバック メッシュと精度の設定

マイケル
マイケル
複数アセットを一括で設定することも出来て、その場合ContentBrowserから選択した状態で右クリック > Nanite項目から行えます。
20250504_01_ue_optimize_09
▲ContentBrowserからも設定が行える

エレキベア
エレキベア
設定は本当に簡単クマね
マイケル
マイケル
また余談になりますが、ContentBrowserからは「NaniteEnabled」でフィルタをかけることでNanite有効・無効アセットを一括で検索することも出来ます。
20250504_01_ue_optimize_10
▲ContentBrowser上から「NaniteEnabled」でフィルタをかけることができる(Column表示にすると分かりやすい)

エレキベア
エレキベア
ContentBrowser結構高機能クマね

Nanite対応アセット

マイケル
マイケル
こんなに便利なら全てNaniteアセットにすればいいのでは・・・?と思いますがそうはいきません。 UE5.5の現状はNaniteに対応されていないアセットもいくつかあるため、注意が必要です
機能
〇 使用可能
△ 注意が必要
× 使用不可
ジオメトリ
・スタティックメッシュ
-
・スケルタルメッシュ(※5.5から実験的機能として使用可能)
マテリアル
・Opaqueマテリアル
・Maskedマテリアル
・WorldPositionOffset(WPO)使用マテリアル
・Opaque、Masked以外のマテリアル

参考: Naniteのサポートされている機能 | Unreal Engine 5.5 ドキュメンテーション

マイケル
マイケル
そしてNaniteがサポートされるプラットフォームにも指定があるためこちらも注意が必要です。 もし非対応環境もサポートする場合には、手動のLOD設定も視野に入れなければならなそうです。

参考: サポートされるプラットフォーム | Unreal Engine 5.5 ドキュメンテーション

エレキベア
エレキベア
こればっかりは悩ましいクマね・・・

Nanite Tesselation (実験的機能)

マイケル
マイケル
そして最後に紹介になりますが、UE5.3からは実験的機能として「Nanite Tesselation」という機能も追加されたようです。 こちらはディスプレイスメントマップを適用したメッシュをNaniteジオメトリとして扱うことが出来る機能になります。
20250504_01_ue_optimize_02
▲Naniteテッセレーションを使用した例

引用:Nanite テッセレーション | Unreal Engine 5.5 ドキュメンテーション

20250504_01_ue_optimize_03
▲マテリアルからディスプレイスメントマップを接続する

引用:Nanite テッセレーション | Unreal Engine 5.5 ドキュメンテーション

エレキベア
エレキベア
おお~~これが出来ればマテリアルでいろいろ操作して遊べそうクマね
マイケル
マイケル
導入方法については下記の記事で書いてくださっていたので、興味がある方はこちらも触ってみてください

参考:
[UE5]Nanite Tessellation を使ってみよう

Lumenの概要

Lumenとは

マイケル
マイケル
次にLumenは、ベイク無しで動的なGI(関節光、リフレクション)を実現する機能になります。
20250504_01_ue_optimize_16
▲Lumen無効

20250504_01_ue_optimize_15
▲Lumen有効

エレキベア
エレキベア
リアルアイムにGIクマか・・・ そんなこと本当にできるのクマ?
マイケル
マイケル
事前の焼き付けが必要だったこれまでと比べたらすごいよね。 事前にLumenSceneと呼ばれる照明情報を作成してからライティングすることで実現していて、 処理負荷は比較的高いけど、Naniteメッシュと相性がよく効率的に構築することができるんだ。
機能概要
〇 メリット
△ 注意点
・ベイク無しで動的なGIを実現する
・Naniteジオメトリと相性が良い
・処理負荷が比較的高い
・残像が起きやすい
従来機能との対応
従来の機能
〇 優位性
・Lightmapによる焼き付け
・Screen Space Global Illumination (SSGI)
・Path Tracer
・リアルタイムにGIが行える
エレキベア
エレキベア
Naniteがここにも効いているのクマね

Lumenの処理内容

マイケル
マイケル
Lumenの処理内容としては、LumenSceneという簡略化したシーンを構築してトレースすることで描画します。 ざっくりと下記のような流れになっています。
  • LumenSceneの構築
    • 各メッシュのカードを生成して照明計算を行う
    • 計算結果を元にメッシュorディスタンスフィールドを表示する
  • LumenSceneのトレース
    • 下記いずれかの方法でトレースを行う
      • Software RayTracing (ディスタンスフィールド)
      • Hardware RayTracing (メッシュ)
マイケル
マイケル
LumenSceneは、Visualizationから表示できます。 SurfaceCacheを表示すると、計算できる部分などの表示も確認することが出来ます。
20250504_01_ue_optimize_19
▲LumenSceneの表示

20250504_01_ue_optimize_18
▲SurfaceCacheの表示(マゼンタ: 計算できない部分 黄色: SurfaceCacheに入っていないもの)

エレキベア
エレキベア
事前に必要な情報を計算してからトレースを行うクマね
マイケル
マイケル
細かい内容については下記スライドで紹介されていたのでご参照ください! こちらでは シーン全体のDeferred Rendering と例えられていて確かにと思いました。

参考: Unreal Engine5 Lumenの仕組みと肝心なところ

Lumenの設定方法

マイケル
マイケル
Lumenは Project Settings > Rendering から有効にできます。 それに加えて GIのスケーラビリティ設定を High以上に設定するとゲーム内で有効になります。
20250504_01_ue_optimize_20
▲Project Settings > Rendering から設定を行う

参考:
Lumen の設定 | Unreal Engine 5.5 ドキュメンテーション
Lumen パフォーマンス ガイド - スケーラビリティ設定 | Unreal Engine 5.5 ドキュメンテーション

エレキベア
エレキベア
ここでGIをどのように表現するかを設定できるのクマね
マイケル
マイケル
プロジェクト設定は全体に設定されるけど、CineCameraやPostProcessでも設定出来るので 細かい調整が必要な場合にはこれらを使用しましょう。
マイケル
マイケル
トレース方法としては Hardware RayTracingを使用すると綺麗に反射が表現できますが、対応機種は限定されるため注意が必要です。 こちらの挙動を確認したい場合、Project Settingsから「Support Hardware ray Tracing」「Use Hardware Ray Tracing When available」を無効にすることで、明示的に設定することができます。
  • トレース方法の種類
    • Software RayTracing
      • ディスタンスフィールドに対して行う
    • Hardware RayTracing
      • メッシュに対して行う
20250504_01_ue_optimize_17

対応条件参考:
ハードウェア レイ トレーシング | Unreal Engine 5.5 ドキュメンテーション

最適化の方法

マイケル
マイケル
最後にLumenをどう最適化、調整すべきかについてですが 基本はスケーラビリティを変更することで大まかに変更しつつ、 それに加えてNaniteの設定を調整したり、Lumen解像度など細かい調整を行うことで最適化していくのがよいそうです。
  • 基本はスケーラビリティの設定
    • Epic: 30fps向け、High: 60fps向け
  • アセット側の対応
    • StaticMeshを出来るだけNanite化
    • Naniteの軽量化
    • Lumenカードをマージ
    • Lumenカードの解像度を下げる
    • Lumen計算の複数フレーム分散

参考:
Unreal InsightsとProfileGPUから見るLumenとNanite + 5.4までのアップデート
Lumen パフォーマンス ガイド | Unreal Engine 5.5 ドキュメンテーション

マイケル
マイケル
Nanite設定がLumenのパフォーマンスに影響を与えることを考えると、ポリゴン数が少ないメッシュでもNanite化しておくことは意味がありそうですね
エレキベア
エレキベア
UE5以降のグラフィック最適化は、Naniteが主軸となりそうクマね

Virtual Shadow Map (VSM)の概要

VSMとは

マイケル
マイケル
最後にNanite、Lumenと一緒に出てくることの多いVSMについてですが、こちらは Virtual Shadow Mapの略になります。 名前の通りVirtualTextureの仕組みを活用したShadowMapで、タイル状に並べた高解像度のShadowMapを使用することで、高品質なシャドウ描画を行うことが出来ます。

参考:
仮想シャドウマップ | Unreal Engine 5.5 ドキュメンテーション

機能概要
〇 メリット
△ 注意点
・VirtualTextureの仕組みを活用することで質の高いシャドウ描画を行う
・Naniteジオメトリと相性が良い
・処理負荷が比較的高い
従来機能との対応
従来の機能
〇 優位性
・シャドウマップ
・レイトレーシングのシャドウ
・距離フィールドシャドウ
・Lightmassによる自動計算されたシャドウ
・Naniteジオメトリに対応し、高品質
20250504_01_ue_optimize_24
▲従来のShadowMap

20250504_01_ue_optimize_21
▲VirtualShadowMap

20250504_01_ue_optimize_23
▲タイル状に並べたShadowMapを使用する

エレキベア
エレキベア
むむ、これもNaniteと相性がよい機能なのクマね

VSMの処理内容

マイケル
マイケル
VSMの処理内容としては、ざっくりと下記のようになります。
  • ShadowMapの作成
    • VirtualTextureを使用し、必要な場所に必要な解像度で作成する
  • ShadowMapの描画
    • Shadow Map Ray Tracing(SMRT)によりシャドウ描画を行う
マイケル
マイケル
ShadowMapは、VirtualTextureを使用して画面に移った範囲に応じて必要な解像度で作成し、VirtualPageを表示することで確認できます。 この作成処理はNaniteメッシュを使用すると効率よく作成できるようです。
20250504_01_ue_optimize_23
▲タイル状に並べたShadowMap

20250504_01_ue_optimize_22
▲画面に映った範囲に応じて必要な解像度で描画する

エレキベア
エレキベア
必要な箇所ほど高解像度で描画されるというわけクマね

VSMの設定方法

マイケル
マイケル
VSMの有効化に関しては、Project Settings > Rendering から切り替えることができます。
20250504_01_ue_optimize_25


エレキベア
エレキベア
Lumenと同じくプロジェクトの設定として設定できるクマね
マイケル
マイケル
その他、細かい設定については r.Shadow.Virtual.XXX 形式のコンソールコマンドがいくつか用意されているようなので、こちらから調整しましょう。

最適化の方法

マイケル
マイケル
最適化の方法としては下記のような方法があります。 この中でキャッシュの確認については CachePageの表示で確認 することが出来るため、まずは無効になっているオブジェクトが無いか確認してみましょう。
  • キャッシュを無効化するオブジェクトを減らす
  • Distant Lights、Onepass Projectionを有効にする
  • LodBiasでShadowMapのLODを調整する
  • Max Physical Pagesを減らす

参考:
仮想シャドウマップ - キャッシュ | Unreal Engine 5.5 ドキュメンテーション

20250504_01_ue_optimize_26
▲CachePageを表示すると、現在のCache状態が確認できる

20250504_01_ue_optimize_27
▲r.shadow.virtual.showstats 1 でVSMの状態を確認することも出来る

エレキベア
エレキベア
これでVSMもざっくり分かった気がするクマ~~~

おわりに

マイケル
マイケル
というわけでUE5のグラフィックス機能についてでした! どうだったかな?
エレキベア
エレキベア
UEのグラフィックス機能がすごいのは知っていたクマが、改めて見るとメッシュ、ライティング、シャドウイングと常識を大きく覆す機能だったクマね 特にNaniteはそれぞれに影響を与えていて肝になると思ったクマ
マイケル
マイケル
Naniteの影響が大きいから、最適化もこれまでのやり方とは大きく異なってくるね 素晴らしい機能とはいえ、現状だとまだ未サポートのメッシュもあったりするから、それらとこのグラフィックス機能のバランスを取って調整するスキルが必要そうだ!
マイケル
マイケル
どちらにせよUEを触る以上は付き合っていかないといけない部分だから、メリット・デメリットを理解してガンガン活用していこう! それでは今日はこの辺で!アデューー!!
エレキベア
エレキベア
クマ~~~~~~~

【UE5.5】Nanite、Lumen、VSMの概要についてまとめる ~完~


UnrealEngineグラフィックスNaniteLumenVirtual Shadow Map最適化
2025-05-12
記事をSNSで共有する
X
Facebook
LINE
はてなブックマーク
Pocket
LinkedIn
Reddit

著者の各種アカウント
フォローいただけると大変励みになります!
X
GitHub

関連記事
【Houdini21.0】3Dビル群っぽいブログヘッダー画像を作成する
2026-01-10
【Houdini21.0】Solaris徹底入門:USD構成を意識した基本的な作業フローについてまとめる
2025-12-31
【ゲーム数学】第十回 p5.js(+α)で学ぶゲーム数学「複素数とフラクタル」
2025-11-02
【プロシージャル】Pythonで学ぶ波動関数崩壊アルゴリズム(Wave Function Collapse)
2025-06-22
【書籍紹介】「コンピュータグラフィックス」に出てくる用語をまとめる【CGエンジニア検定】
2024-07-13
【UE5】Niagara SimulationStageによるシミュレーション環境構築
2024-05-30
【Unity】Boidsアルゴリズムを用いて魚の群集シミュレーションを実装する
2024-05-28
【UE5】第三回 ミニゲーム制作で学ぶUnrealC++ 〜UI・仕上げ実装 編〜
2024-05-18