画面分割

詳細モードとプロファイル コマンドを使用して、画面分割用にエフェクトを最適化する

Choose your operating system:

Windows

macOS

Linux

詳細モードの概要

現在アンリアル・エンジン 4 は、以下の 3 つの詳細モード間の切り替えをサポートしています。低度、中程度、高度です。エフェクトを含む場合、詳細モードは中程度および高度の詳細モードに設定されます。これは主に画面分割の再に、描画コールが低いレベルのパフォーマンスに達する場合に使用されます。主な目的は、エミッションレートをカリングあるいは削減することにより、中程度の詳細モードで描画コールを減らすことです。

ゲームが中程度の詳細モードで実行されている場合、カスケードのエミッタ上の Medium Detail Spawn Rate Scale フィールドの値を変更すると、エミッション レートが下がります。これらの設定値は、要件に応じてオーバードローおよび描画コールを減らすために使用されます。分割スクリーンの場合、ドローコールの削減が鍵となります。

描画コールの判断方法

詳細モードはカスケード内で、 [View] メニュー -> Detail モード 設定、あるいはアンリアル エディタ全体に対して Quick Settings (クイック設定) -> Engine Scalability Settings (エンジン拡張性の設定) -> Effects quality level (エフェクト品質レベル) を変更して設定できます。Medium Detail Spawn Rate Scale を確認するために詳細モードを中程度に変更し、現在アクティブになっている詳細モードが赤字のテキストで表示されるはずです。このモードに対してエフェクトを調整する場合のみ、中程度の詳細モードで作業することが非常に重要です。プロジェクトのデフォルトが中程度の詳細モードの場合を除いて、デフォルト状態では変更はゲームでは見えないようになっています。

Medium Detail Spawn Rate Scale は乗数で、0-1 の範囲内に設定すると適切な値になります。基本的には、 5 に設定するとパーティクル エミッション数になり、値が 1 だと現在のエミッション レートを使用します。値はクランプされ 1 より多くはなりません。

環境エフェクトの配置中であれば、画面分割を検討するのはグッドプラクティスです。エフェクトが画面分割に不必要で描画コール数が高い場合、エフェクトがメッシュ エミッタのみで構成されていれば特に、そこからエミッション数の削減を始めると良いかもしれません。

パーティクル用のドローコールは、マテリアルによって決定されるということを覚えておくことは重要です。例えば、エミッション レートが 30 のエミッタ上で 1 つのパスを持つマテリアルは 1 ドローコールのみです。

コマンド

描画コール負荷の判断に利用すると便利なコマンドが幾つかあります。

Play in Editor あるいはゲームで Split Screen モードを切り替えるためには、コンソール コマンド debugCreatePlayer 1 を使用します。

コントローラが 1 つしかない場合は、コマンド ssswapControllers を使ってプレイヤー間をジャンプします。

特定の領域のための描画コールを表示するには、 DumpParticleFrameRenderingStats (パーティクルフレーム レンダリング統計のダンプ) コマンドを使用します。このコマンドはアクションが発生する場所のスプレッドシートとスクリーンショットをダンプします。このスクリーンショットはデータがダンプされた後に取られたもので視覚的なリファレンスにすぎないので、概算になります。

統計情報はスプレッドシートで簡単に見ることができます。下記のようになるはずです。

particlestats.jpg

この場合、修正は非常に簡単です。メッシュを沢山呼び出さなければならないエフェクトは 1 つだけで、メッシュはスポーンをループする可能性が高いです。ただし、1 つのエフェクトが主な原因なので扱いにくく、そのエフェクトの外見を現在のままにしておきたい場合は、メッシュをスプライトに変換するオプションしかありません。

画面分割にエミッタが必要なければ、 mediumDetailSpawn レートを 0.00 に設定します。

スプレッドシートの統計情報欄名は、適切な説明に因んでいます。

RenderTime ms

エフェクトのレンダリングかかるミリ秒です。

NumComponents

表示されアクティブなパーティクル システムのインスタンス数です。

NumPasses

エミッターで呼び出されたマテリアル内のパス数です。

NumEmitters

パーティクル システム内にあるインスタンス数です。

NumDraws

パーティクルシステムの全てのインスタンスに対する描画コールの累積数です。

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