Language:
Page Info
Tags:
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

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

以下は、モバイル プラットフォーム上のパフォーマンスを最大にするための注意事項もしくは推奨事項です。重要なものから順番にリストしました。

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

  • ポストプロセス 機能がほぼ無効にされているか確認してください。実際、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 を使用して、エディタでセルを視覚化します。

  • マスクされた透過 マテリアル は画面をあまりカバーしていない場合に使用するようにします。ほとんどの場合、シェーディングはピクセルにつき 1 回しか行わないので、iOS デバイスは不透明なサーフェイスのシェーディングに最適です。ただし、マスクされた透過マテリアルの場合、すべてのレイヤーはシェードされなければなりません。オーバードローにより、フレーム GPU 時間の合計はあっという間に 2 倍以上に膨らみます。モバイル プレビュア[Shader Complexity Viewmode (シェーダー複雑度ビューモード)] を使ってホット スポットを探します。

  • シーン全体の描画コールはどのビューに対しても <= 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 のほとんどのモバイル ライティング機能は混ぜたり一致させることができます。以下のように分類すると便利です。モバイル ゲームのビルド時には、要求されるゲームのグラフの品質、およびサポート対象のデバイスの種類をもとに、使う機能を決定してください。エピックでテスト済みのデバイスおよび最適性については、iOS 開発 のデバイス互換性と Android 開発 を参照してください。

LDR (Low Dynamic Range)

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

長所

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

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

制限事項

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

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

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

推奨事項

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

  • ライトをシーンに配置しないでください。最大パフォーマンスがライトに制限されてしまします。

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

基本的なライティング

このレベルのライティングは、最大のパフォーマンスで幅広いモバイル デバイスに対応しつつ、静的なライティングと Fully Rough 設定の マテリアル を使用して凝ったライティングでレベルを作成します。

長所

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

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

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

制限事項

  • 全ての マテリアル[Fully Rough] にしているので、マテリアル に特に珍しいスペキュラ リフレクションは付きません。

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

推奨事項

  • すべての マテリアル はフラグを [Fully Rough] 設定で作成してください。

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

  • マップでは static light (静的ライト) のみを使用してください。

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

Full HDR ライティング

このレベルのライティングでは、UE4 で使用できるほとんどの HDR ライティング機能に加えてポストプロセス機能も利用できます。クオリティの高いライティング機能のため、パフォーマンス負荷がかなり高くなります。

長所

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

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

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

  • 様々なラフネスをサポートしているので、サーフェス上にリアルなスペキュラ リフレクションを作成できます。

  • ノーマルマップ化されたサーフェスをフルサポートするので、メッシュにポリゴンを追加しなくても興味深いサーフェス ディテールを作成することができます。

推奨事項

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

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

  • 反射キャプチャ の配置についても検討してみてください。詳細については 反射:反射キャプチャの配置 をご覧ください!

  • シーンでは、パフォーマンスをベストに保つためにも、Static Light (静的ライト) とライトマップのみを使用してください。

太陽からのピクセル単位のライティングを使った Full HDR Lighting

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

長所

  • 機能と長所は、Full HDR Lighting とすべて同じです。

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

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

推奨事項

  • 推奨事項は、Full HDR Lighting とすべて同じです。

  • 単一の指向性ライトは Stationary (固定) に設定すべきですが、それ以外はシーンでは 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] プロファイルの左側にある [レンチマークの] アイコンをクリックしてプロファイル オプションを開きます。

    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] の調節により、プラットフォームで使用できるレンダリング オプションのオーバーライドが可能になります。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