Language:
Page Info
Tags:
Engine Version:

モバイル デバイスのパフォーマンス ガイドライン

以下は、モバイル プラットフォーム上のパフォーマンスを最大に発揮させるための注意もしくは提案です。要求の高いものから簡単なものまで紹介します。

  • デバイスで実行する前にライティングがビルドされていることをご確認ください。

  • ポストプロセス 機能はほとんどが無効化されていることをご確認ください。実際、iPad4 で使用するポストプロセスはビネットを含めて Temporal AA と Film だけです。PC と モバイル間の設定は同じなので、 Bloom や DOF などの負荷の大きい機能群はデフォルトで無効になっています。デフォルト設定の ポストプロセス 機能を使うと、60+ms を軽く超えます。ハイエンド デバイスで Bloom、DOF、ライトシャフトが使用できるようにしたいです。show postprocessingポストプロセス の切り替えと負荷量の表示に使用できます。

  • [Precomputed Visibility (事前計算されたビジビリティ)]を、必ず正しく設定するようにしてください。そのためには、プレーヤーが歩行可能な場所の周りに PrecomputedVisibilityVolumes を配置し、ライティングをビルドする必要があります。ライティングのビルド時およびゲームの実行時には、同じ パーシスタント レベルを必ず使用するようにしてください (aka 自体はビルドを行いません)。デバイス上あるいはプレビューに stat initviews と入力すると動作を確認ができます。[Statically occluded primitives] が >0 になるようにしてください。r.ShowPrecomputedVisibilityCells 1 を使用して、エディタでセルを視覚化します。

  • シェードは各ピクセル一回だけの場合がほとんどなので、マスクされた透過 マテリアル を慎重に画面のカバーしている小さい部分のみに使用します。ただし、マスクされた透過マテリアルの場合、すべてのレイヤーはシェードされなければなりません。オーバードローにより、フレームの GPU 時間の合計は簡単に 2 倍以上にできます。モバイル プレビュアシェーダー複雑度ビューモード でホット スポットを調査します。

  • シーン全体の描画コールはどのビューに対しても <= 700 でなければなりません。ランドスケープを見渡すなど、オクルージョンが弱い領域の場合は非常に難しくなります。デバイスでは stat openglrhi、 PC の ES2 previewer では stat d3d11rhi で確認できます。

  • シーン全体のトライアングル数はどのビューに対しても <= 500 でなければなりません。iPad4 と iPad Air の両方で、ポリゴン数が 30fps となる必要があると判断されています。デバイスでは stat openglrhi、 PC の ES2 previewer では stat d3d11rhi で確認できます。

  • マテリアル に使用するテクスチャ ルックアップとインストラクションは出来る限り少なくすべきです。5 つのテクスチャ サンプリングを使用できますが、これら全部を使うとかなり負荷の高いマテリアルになります。差し当たり、PC インストラクション数を使って最適化し、ES2 プレビュア シェーダー複雑度を使って負荷合計を視覚化します。

  • マテリアルでは独立したテクスチャ フェッチのみを使用します。ピクセル シェーダー (BaseColor 、 Roughness など) の UV は、スケーリングを始めとするどんな方法でも操作されてはならないという意味です。その代わりに、この新たな CustomizedUVs 機能を使ってバーテックス シェーダーでスケーリングを行ってください。環境マッピングなどの特別な機能の中には、 UV での計算を必要とする、特別なケースもあります。

  • メモリ消費の少ない正方テクスチャを選択し、常に 2 のべき乗 (512 、1024、2048) のディメンションを使ってください。ES2 プレビュアの listtextures を使って、全てのテクスチャ メモリの行き先を確認します。

パフォーマンス ティア

アンリアル エンジン (UE4) はモバイル デバイス上で様々なライティング機能をサポートしています。これらの機能を使うとパフォーマンスに負荷がかかり、遅めのモバイル デバイス上でゲームのパフォーマンスが下がる原因となります。UE4 のほとんどのモバイル ライティング機能のミックスおよびマッチが可能な一方で、これらの機能を以下のティアに分類すると便利です。モバイル ゲームのビルド時には、要求されるゲームのグラフの品質、およびサポート対象のデバイスの種類をもとに、使う機能を決定してください。Epic でテスト済みのデバイスおよび最適と思われるティアに関する詳細は、 iOS 開発 のデバイス互換性と Android 開発 を参照してください。

LDR (Low Dynamic Range)

Low Dynamic Range (LDR) は、UE4 がサポートするパフォーマンスの中で最も高いライティングや Post Processing 機能を必要としないゲームにお勧めです。このモードを使用するには、プロジェクト設定エディタ のレンダリング セクションで、プロジェクトの「Mobile HDR」を無効にしなければなりません。

長所

  • モバイル デバイスで使用できる最速で最安のオーバーヘッド モードです。処理の遅いモバイル デバイスでゲームを効率よく実行することができます。

  • カスタム仕様のシェーダーを定義するマテリアル エディタへのフルアクセスはそのままで、さらにライティングをフェードする簡単なシェーディングも実行します。

制限事項

  • シーンのカラーを、それぞれのカラー チャンネルを [0,1] の範囲でクランプして、ガンマ空間で書き出します。

  • 透過プリミティブは、ガンマ空間でブレンドされます。多くの場合、透過テクスチャとマテリアルを HDR や 通常の PC ゲームの場合とは異なる方法で作成することが求められます。

  • ポストプロセス機能はこのモードでは使用できません。

推奨事項

  • すべての マテリアル のシェーディング モデルが、最大のパフォーマンスが出せる [Unlit] に設定されるようにしてください。

  • ライトをシーンに配置しないでください。さもなければ最大のパフォーマンスはライト次第になってしまいます。

  • マテリアル のバーテックス シェーダーのオペレーションを可能な限り多く実行するように配慮してください。そのためには、カスタム仕様の UV を有効にし、ノードを接続し、Texture Coordinate ノードを使ってピクセル シェーダーで読み取ります。

基本的なライティング

このティアでは、幅広いモバイル デバイスに対応するためにパフォーマンスを最大にする一方で、静的なライティングと完全にラフな マテリアル を使用して興味深いライティングでレベルを作成します。

長所

  • 静的なライティングとグローバル イルミネーションへアクセスできます。

  • トーン マッピングなどの ポストプロセス 機能の幾つかへアクセスできるFull HDR パイプラインです。

  • 透過は線形空間でブレンドされ、他の UE4 ゲームで普通に行うようにコンテンツが作成できるようになります。

制限事項

  • 全ての マテリアル完全にラフ にしているので、マテリアル には興味深いスペキュラ リフレクションは付きません。

  • ライトマップの方向性を無効にした場合も、法線マップにエフェクトはありません。

推奨事項

  • すべての マテリアル は、完全にラフなフラグ設定で作成してください。

  • パフォーマンスをあげるために、マテリアル のライトマップの方向性の無効化を考慮してください。

  • マップではスタティック ライトのみを使用してください。

  • ブルームとアンチエイリアシングを無効にしてください。フィルムとカラーコントロールの基本設定も忠実に行ってください。詳細は モバイル プラットフォーム上でのポストプロセス エフェクト を参照してください。

Full HDR ライティング

このティアでは、UE4 で使用できるほとんどの HDR ライティング機能に加えてポストプロセス機能も活用します。これらの機能は高品質のライティング機能であるがゆえに、使用するためにはかなりのパフォーマンスが要求されます。

長所

  • 静的なライティングとグローバル イルミネーションへアクセスできます。

  • ポストプロセス機能の幾つかへアクセスできるフルの HDR パイプラインです。

  • 透過は線形空間でブレンドされ、他の UE4 ゲームで普通に行うようにコンテンツが作成できるようになります。

  • 様々なラフネスをサポートしているので、サーフェス上で現実味のあるスペキュラ リフレクションが可能です。

  • ノーマルマップ化されたサーフェスを完全にサポートすることで、メッシュにポリゴンを多数追加しなくてもサーフェスの詳細を興味深くすることができます。

推奨事項

  • ブルームを無効化すると、HDR ライティング パイプラインを大いに活用できます。

  • HDR ライティングと組み合わせた現実味のあるスペキュラ リフレクションは、スペキュラのエイリアシングの発生につながります。ノーマルマップをラフネス機能にうまく利用して、ノーマルマップの高周波成分情報が原因のスペキュラのエイリアシングを軽減してください。このアーティファクトの軽減に向けて、ポストプロセス ボリュームのアンチエイリアシングの有効化も検討すべきです。

  • 反射キャプチャ の配置がベストな結果につながるかも検討してみてください。詳細については 距離フィールド AO のドキュメンテーション をご覧ください!

  • シーンでは、パフォーマンスをベストに保つためにも、スタティック ライトとライトマップのみを使用してください。

太陽からのピクセル ライティングごとのフル HDR ライティング

この段階では、UE4 のモバイルで使用できる HDR ライティング機能の全てを利用します。「フル HDR ライティング」と長所も推奨事項も同じですが、単一の指向性ライトのレンダリングの質は格段にあがります。

長所

  • 機能と長所は、フル HDR ライティングとすべて同じです。

  • 単一の指向性ライトに対してピクセルごとのディフューズとスペキュラ ライティング

  • 単一の指向性ライトに対して事前計算された高品質の距離フィールド シャドウ

推奨事項

  • 推奨事項は、フル HDR ライティングとすべて同じです。

  • 単一の指向性ライトは固定に設定すべきですが、それ以外はシーンでは Static Light (静的ライト) のみを使用してください。

シェーダー複雑度ビュー モード

PC ES2 プレビュアのシェーダー複雑度ビューモードを使うと、マテリアルの負荷がなんとなく分かります。使用方法は、 PC ES2 プレビュア のコンソール上で viewmode shadercomplexity と入力するだけです。SM5 シェーダー複雑度と同様に、 緑はパフォーマンス良好、明るい赤はかなり高い負荷、白またはピンクは 非常に 高い負荷を表します。モバイル ショーケースからのサンプルを いくつか紹介します。

1.png 2.png 3.png

柱のマテリアルの負荷がかなり大きく、透過ボリューム シートの負荷が 非常に 大きい。負荷が大きすぎるので、透過シートを削除してください。

柱には 5 テクスチャ ルックアップを全て使用し、レイヤー処理も多いので、負荷がかなり大きい。そうでなければ、30fps で十分です。

木が原因でピクセル負荷が 非常に 高い。プレイヤーが近寄ったり、マテリアルで画面を覆うと負荷は最大になります。

モバイル コンテンツ スケール係数

Mobile Content Scale Factor はプロジェクトの解像度をスケーリングして、プロジェクトを表示するるモバイル デバイスの画面解像度を最適にする手段です。 プロジェクトの config フォルダの中に DefaultDeviceProfiles.ini という名前の .INI ファイルを新規作成すれば、複数のデバイス プロファイルの作成と格納が可能になります。 このファイルの中に、以下のコマンドを入力してプロジェクトの解像度を指定します。

 r.MobileContentScaleFactor = 

このコマンドを使って Mobile Content Scale Factor を実行したサンプルが以下の画像です。

クリックしてフルサイズで表示

上の画像は UE4 Tappy Chicken プロジェクトです。各種モバイル デバイスで再生すると解像度の変化の様子を比較することができます。 ファイルの上部で iOS デバイス用の解像度のスケーリングを行い、下部では Android デバイスの解像度のスケーリングを行います。 r.MobileContentScaleFactor の後に付いている番号を確認してください。 コマンドの後にある数字で、プロジェクトの解像度の拡大縮小を判断します。

iOS 向けモバイル コンテンツ スケール係数

iOS デバイス向けのモバイル コンテンツ スケール係数を使う場合は、r.MobileContentScaleFactor に続く番号により次の結果が決まります。スケール係数が 0.0 以外の実際の解像度は、画面のアスペクト比に合うように修正されて、ネイティブ解像度にクランプされます。

iOS スケール係数は Apple のスケール係数システムに直接関係します。

コマンド 結果
r.MobileContentScaleFactor 0.0 デバイスのネイティブ解像度を使います。
r.MobileContentScaleFactor 1.0 Retina デバイス上での解像度は retina 対応ではありません。
r.MobileContentScaleFactor 2.0 IPhone 5S や iPad Air などではフル ネイティブ解像度です。
r.MobileContentScaleFactor 3.0 Iphone 6+ 向けのフル ネイティブ解像度です。

Android 向けモバイル コンテンツ スケール係数

Android デバイス向けのモバイル コンテンツ スケール係数を使う場合は、r.MobileContentScaleFactor に続く番号により次の結果が決まります。0.0 以外の値を入力すると、方向に合わせて 1280x720 または 720x1280 の標準解像度に対してこの値がスケール係数として使用されることに留意してください。

コマンド 結果
r.MobileContentScaleFactor 0.0 デバイスのネイティブ解像度を使います。
r.MobileContentScaleFactor 1.0 ランドスケープが 1280 x 720、ポートレートが 720 x 1280 の解像度になります。
r.MobileContentScaleFactor 2.0 ランドスケープが 2560 x 1440、ポートレートが 1440 x 2560 の解像度になります。

Mobile Material Quality 設定

ローエンドとハイエンドの両方のモバイル デバイスに対応したアンリアル エンジン 4 (UE4) プロジェクト用のコンテンツを作成する場合、一定の機能があるデバイス群では動くのに別のデバイス群では動かないという問題に直面します。さらにアートワークについても、あるデバイスでは正しく表現されるのに、別のデバイスでは全く異なって見えてしまう場合もあります。このような問題への対処方法はいろいろありますが、時間とリソースが著しい上に、エラーを起しやすい場合がほとんどです。その対策として UE4 には Material Quality Level システムが付いています。このシステムは、1 つのマテリアルに対して、デバイスごとに使用できる機能を完全に制御し、様々なデバイスで幅広く使えるように作成することができます。次のセクションでは、これらのシステムの UE4 プロジェクトでの使用方法を説明します。

Material Quality Level のプレビュー

UE4 エディタでは、様々な Material Quality Level の結果を表示できます。 メインツールバー[Settings (設定)] > [Material Quality Level (マテリアル品質レベル)] の中から、プレビューしたい品質レベルを選択します。

クリックしてフルサイズで表示

Material Quality Level を Low、Medium、High に設定すると、それぞれ以下のようになります。

スライダーをドラッグすると、[Material Quality Level] の設定を Low から Medium、High にした場合の変化が表示されます。

Material Quality Level の設定

UE4 で Material Quality Level を設定するには以下の手順に従います。

コンソールで設定する方法:Backtick キーを押して UE4 コンソールを開き、次の数字のいずれかの前に r.MaterialQualityLevel を打ち込むと、エディタで使用するマテリアルの品質レベルを設定することができます。

MQS_Console_Command.png

マテリアル品質レベル番号 設定
0 Low
1 High
2 Medium

1 が高めで 2 は中間 で合っています。誤植ではありません!

Device Profiles のデフォルト設定:マテリアルの品質はこの方法でも調節できます。

  1. メイン ツールバーの [Windows] > [Developer Tools (開発ツール)] から [Device Profiles (デバイス プロファイル)] をクリックします。

    クリックしてフルサイズで表示

  2. Device Profiles の [Android_Low profile] の最初の [レンチマークの] アイコンをクリックしてプロファイル オプションを開きます。

    MQS_Edit_Profile.png

  3. [Console Variables (コンソール変数)] セクションの [Rendering (レンダリング)] オプションの [+ (プラス記号)] アイコンをクリックし、入力ウィンドウが表示されたら 「R.MaterialQualityLevel」 と打ち込み、[Enter] キーを押してコマンドをリストに追加します。

    クリックしてフルサイズで表示

  4. 新規エントリが追加されたら、デフォルト値を 1 から 0 に変更します。ローエンドな Android デバイス上でプロジェクトを表示する場合、最速のマテリアル設定が使われます。

    クリックしてフルサイズで表示

異なる品質レベルのプレビュー

[Preview Rendering Level (レンダリング レベルをプレビュー)] を調節して、異なるハードウェアでのプロジェクトの見え方を UE4 エディタからプレビューします。メインツールバー[Settings (設定)] > [Preview Rendering Level (レンダリング レベルのプレビュー)] から使用したいプレビュー レベルを選択します。

クリックしてフルサイズで表示

Material Quality Level の切り替え

Quality Switch マテリアル式は、1 つのマテリアルに対して異なる複雑度を定義することができます。例えば、ハイエンド デバイスでは正常で、ローエンドで複雑な演算やテクスチャ解読が実行不可能な場合、このノードによってハイエンド グラフィクスを表示するだけのパワーのないローエンド モバイル デバイスでの表示用の簡素化版を指定することができます。

image08.png

マテリアルで Quality Switch を行うには、まず Quality Switch ノードをマテリアル グラフに追加します。次に、品質レベルを変更した時に変わってもらいたい Main Material ノード上に入力があれば、そこに出力を接続します。以下の画像では、Quality Level が変更されるとマテリアルの複雑度が下がるよう、Starter Content に入っている M_Brick_Clay_Old Material を設定しました。

クリックしてフルサイズで表示

モバイル マテリアルのオプション

Material を開いて Main Material ノードをクリックし [Details (詳細)] パネルの [Mobile] セクションを開くと、以下の 2 つのプロパティがあります。

  • Fully Rough:数多くの命令と、テクスチャ サンプリング 1 つを保存してマテリアルを完全に粗くします。

  • Use Lightmap Directionality:ライトマップ指向性とピクセルごとの法線を使用します。無効にすると、ライトマップからのライティングはフラットになりますが、負荷が小さくなります。

クリックしてフルサイズで表示

パワー低いモバイル デバイスで表示する時に、この 2 つのプロパティは、これらの機能で使うレンダリング パスを完全に削除することにより、マテリアルのレンダリング負荷を軽減します。ただし、これらのオプションはすべてのデバイスでこのマテリアルを有効か無効のいずれかにするので、いちかばちかのオプションです。

モバイル マテリアルのレンダリングをオーバーライドするオプション

[ES2 Quality Settings] の調節により、プラットフォームで使用できるレンダリング オプションのオーバーライドが可能nなります。Android も iOS も、ES2 Quality Setting は [Project Settings (プロジェクト設定)] > [Platforms][Android ES2 Quality] または [iOS ES2 Quality Settings] の中にあります。オーバーライドを使用するには、[Enable Quality Override (品質オーバーライドを有効にする)] オプションを開いて、オーバーライドしたいオプションをクリックして選択します。オプションをすべて選択したら、[Update preview shaders (プレビュー シャドウを更新)] ボタンを押してすべてのマテリアルを再コンパイルして、指定したオプションが使えるようにします。

クリックしてフルサイズで表示

モバイル レンダリング オプション

[Project's Settings (プロジェクトの設定)] メニューの [Mobile] セクションに、モバイル プロジェクトでライティングの処理方法を制御するプロパティがたくさん含まれています。これらの設定およびプロジェクトでのエフェクトについて、次のセクションで説明します。

プロジェクト設定へのアクセス方法

メインツールバー から [Edit (編集)] > [Project Settings (プロジェクト設定)] を選びます。

MRO_Project_Settings.png

その中の [Engine] セクションにある [Rendering] カテゴリを開くと、[Mobile] という見出しがあります。

クリックしてフルサイズで表示

モバイル レンダリング オプション

[Mobile] セクションで、様々なオプションを有効あるいは無効に設定することができます。これらのプロパティおよびモバイル プロジェクトでのエフェクトについて、次のセクションで説明します。

MRO_Mobile_Settings.png

プロパティ名 説明
Mobile HDR true の場合、モバイルはフル HDR でレンダリングされます。処理が遅いデバイスではパフォーマンスを上げるために、ライティング機能を必要としないゲームではこの設定は無効にしてください。
Max Dynamic Point Lights モバイル デバイス上でサポートする動的なポイントライトの数です。動的なポイント ライトを必要としないゲームの場合は 0 に設定して、シェーダーの生成数が少なくなります。この設定を変更するには、エディタを再起動する必要があります。
Use Shared Dynamic Point LIght Shaders 有効にすると、サーフェイスに当たる動的ポイントライトに好きなだけ (Max Dynamic Point Lights での指定数まで) 同じシェーダーが使われます。処理は遅くなりますが、シェーダーの生成数は少なくなります。この設定を変更するには、エディタを再起動する必要があります。
Enabled Combined Static and CSM Shadowing Stationary Light (固定ライト) から静的シャドウと CSM シャドウの両方を受け取るプリミティブです。無効にすると、モバイル テクスチャ サンプリングが解除されます。
Tags