Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE5 UE4と重い部分を比較して軽量化してみる

Unreal Engine 5のPreview 2が出てから少したちました。様々な新機能が追加されており、検証にもまだまだ時間がかかりそうです。そしてUE5の正式版はそう遠くないはず。

今回はUE4と比較して、重たいと言われているUE5において、具体的にどこが重たいのかを検証してみました。今回使っているGPUGeforce RTX 3070を使っての計測となります。それでは早速検証結果をみていきましょう。

負荷検証

UE5になって重たくなったというのは主にGPUの部分です。CPUの部分はほとんど変わっておらず、むしろ速くなっているくらいです。なのでGPU部分の負荷をまずは検証してみます。

検証はUE4.27.2とUE5 Preview 2のサードパーソンテンプレートを起動した時点での負荷となります。どちらも一切手を入れない状態で検証をしてみます。検証は『Ctrl + Shift + ,』キーの同時押しによるGPUビジュアライザーを使います。

UE4.27の画面

f:id:alwei:20220327214522p:plain

UE5 Preview 2の画面

f:id:alwei:20220327214547p:plain

ではそれぞれのGPUビジュアライザーをみてみます。

UE4.27のGPUビジュアライザー

f:id:alwei:20220327214821p:plain

UE5 Preview 2のGPUビジュアライザー

f:id:alwei:20220327214838p:plain

それぞれ『Scene』の値が全く違うことがわかります。では次にこの中をみていきましょう。

最も重たい部分

UE4もUE5も最も重たい部分は『PostProcessing』の部分となっており、共通しています。
それぞれ0.69msと3.90msとなっていてUE5の方が6倍ほど重たいです。

f:id:alwei:20220327215458p:plain

そして次に重たいのはUE4の場合はライティング合成段階のアンビエントオクルージョンでした。ここだけで0.30msかかっているのに対して、UE5は『LumenScreenProbeGather』と『LumenReflections』という部分で1.6msほどかかっています。

f:id:alwei:20220327220221p:plain

UE4はそれ以外に重い部分はディレクショナルライトのライティングとBasePassによるメッシュの描画くらいだったのに対して、UE5は『LumenSceneLighting』という部分も1.2msほどかかっているのでかなり重たいと言えます。サードパーソンテンプレートでは少なくともUE5はUE4に対して4,5倍ほど重くなっているということがわかりました。

やはり主に負荷となっているのがLumenによるライティング処理ということがわかりました。LumenはUE5における最も主力となるメイン機能なのであまりやりたくはないのですが、ここではガッツリとオフにしてみましょう。

Lumen無効化

Lumenの無効化はプロジェクト設定から可能です。『レンダリング』カテゴリーを選択し、『ダイナミック グローバル イルミネーション メソッド』を『Lumen』から『None』へ。『反射メソッド』を『Lumen』から『None』へ。これで基本的なLumen処理を切ることができたと思います。

f:id:alwei:20220327221244p:plain

これで計測してみたところ、Scene負荷は8.68msから6.54msへと減少しました。約2.14msの軽減なのでかなり軽くなりましたが、まだ重たいですね。ただLumenの処理は丸ごと切ることができたので、Lumenが不要で軽量化したいという方にはこの方法が有効そうです。

では次に最も重たいPostProcessingの中身をみていきましょう。

ポストプロセスの負荷

UE4と比較して、ポストプロセスが非常に重たいUE5ですが、その処理の大部分は『TemporalSuperResolution』と『CompositeEditorlPrimitives』の2つです。前者はUE5の新機能によるTemporalAAに代わる超解像度サンプリングによるアンチエイリアスフィルターによるものと、後者はエディター描画による負荷で、こちらもMSAAによるアンチエイリアスを処理しており、負荷となっています。

f:id:alwei:20220327222451p:plain

これを軽量化してみるとどうなるか…?

軽量化は再びプロジェクト設定の『レンダリング』カテゴリーにある『アンチエイリアス手法』を変更します。

f:id:alwei:20220327223201p:plain

ではこれを変更することでどの程度の変化があるかをみてみましょう。

アンチエイリアス最適化

今回はアンチエイリアスを以下の4つで比較しました。

Temporal Super Resolusion(TSR
Temporal Anti Aliasing(TAA)
Fast Approximate Anti Aliaging(FXAA)
None(アンチエイリアスなし)

これらをオンにした状態で、『PostProcessing』の負荷数値を確認してみます。

TSR → 3.90ms
TAA → 2.65ms
FXAA → 0.77ms
None → 0.74ms

上と下で最大3.26msも差があります!!これは大きいです。しかし当然なら重い処理ほど綺麗なアンチエイリアスがかかりますので、一概に切ればいいというものではありませんが、UE5はTSRとTAAに大きく負荷がかかっているので、PCスペックが低い場合にはFXAAで作業するのがお勧めです。

終結

簡単にですが、いくつかのUE5用の処理を切ることで軽量化ができました。では最終的な結果をみてみましょう。

f:id:alwei:20220327224448p:plain

UE4.27.2 Scene負荷 1.97ms
UE5 Preview 2 Scene負荷 3.27ms

UE4とUE5ではエディター上のビューポート解像度に差があったり、そもそもサードパーソンテンプレートに内容の違いがあり、比較をするには公平とは言えませんが、UE5は 8.68ms から 3.27ms まで高速化されています。

しかしUE5の注目機能である、LumenとTemporal Super Resolusionを犠牲にしているので、勿体無いという気持ちもありますがそれでもUE5で作業したいという場合にはこれらを切って作業するというのは多いに負荷軽減に役立つと思いますので検討してみてください。