UE4シーンの高速化の話

@EpicGamesJapan さんがUE4シーン高速化の話をつぶやいておられたので、まとめておきました。
ue4
13
エピックゲームズジャパン @EpicGamesJapan

弊社のJoeの方でまとめてくれているUE4を高パフォーマンス動作させる為に注意すべき点のドラフト。 RT @noevilpeople docs.google.com/document/d/14m…

2014-08-13 03:08:52
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化1: stat unitやstat unitgraphコマンドで、ボトルネックがCPU(Game Thread)かDRAW(GPU Thread)かGPU(GPU描画)にあるか確認。stat unitgraphは数フレーム分の平均値なのでstat rawで即値

2014-08-13 03:15:34
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化2: どこがボトルネックになっているかによってプロファイル機能を使い分ける。CPUの場合はUnreal FrontendからCPUのプロファイルを、GPUの場合はProfileGPUコマンド、もしくはShift+Ctrl+,(カンマ)。GPUが重い場合が多い。

2014-08-13 03:22:04
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化3: GPUが重い場合、プロファイルを見ると多分Lightに関する部分が目立って大きい。さらに詳細をチェックすると動的なライティング・シャドウイングがほとんどを占める。(シャドウを落とすライトxその影響範囲の動的オブジェクト)xシャドウを落とすライト的なはず。

2014-08-13 03:27:34
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化4: Light周りのパフォーマンスを向上させるには極力動的にシャドウを落とすライトをシーン中に置かない。ライトはStatic(事前焼き付け)が一番軽く、次にStationary(事前ShadowMap生成)、一番重いのがMovable(動的Shadow生成)

2014-08-13 03:34:49
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化5: Stationaryライトは4つ以上重なるものは内部でMovable扱いになるので注意。ビューの描画モードのStationary Light Overwrapで確認でき、赤くなるものがそれ。

2014-08-13 03:38:10
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化6: StaticやStationaryでも動的オブジェクトへは個別にシャドウマップが作られる(ライトの種類ポイント/スポット/ディレクショナル/カスケーデッドによって内部動作は異なる)ので必要以上に影響しているライトの影響範囲の確認や動的オブジェクトの纏め。

2014-08-13 03:45:18
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化7: GPUのプロファイラで各ライトがどのオブジェクトのシャドウを生成したか確認できるが、ビューのShowメニューのShadow Frustumsにチェックすると、シャドウを生成される領域の錐体が可視化できる。この錐体を減らす!→パフォーマンスUP!

2014-08-13 03:49:16
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化8: 動的シャドウはキャラクター本体と別アクターの持ち物とい組み合わせや、動的オブジェクト群に対して、個別それぞれ生成されてしまうので、まとめることが可能。シーンアウトライナー等で親子付けして、子供側でUse Attach Parent Boundにチェック。

2014-08-13 03:57:11
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化9: まとめた場合に位置が多少離れていてシャドウが見切れてしまう場合は親側のBounds Scaleを調整する。あとはライトが不必要な動的アクターのに影響していないか、影響範囲を再チェック。

2014-08-13 04:00:53
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化10: これらの事を行う事でLight周りは結構高速化できるはず。Light周りのボトルネックへの影響が少なくなってくると、ポストプロセス系の負荷が気になってくると思われるので、不要なものがありそうならオフにしたり、描画のScalability調整。

2014-08-13 04:04:26
エピックゲームズジャパン @EpicGamesJapan

Joeのまとめている資料は日本語化も進めていて、さらに今日呟いたようなことも追加して公開するようにします。以上長くなりましたが、高フレームレート動作が必要な場合に試してみてください。当面高フレームレート動作が必要ない場合でも、キャラを沢山出せる余地が出てくるので有用だと思います。

2014-08-13 04:08:37
エピックゲームズジャパン @EpicGamesJapan

UE4シーンの高速化、補足: ブループリントは何でもかんでもTickで回さずに、イベントドリブンに組むことを意識してCPUへの負荷を抑えると吉。Windowsとかだって全ウインドウ要素が毎Tick回るような設計だと激重になりますよ♪(´ε` )

2014-08-13 04:14:14