拡張性の設定では、異なるプラットフォームやハードウェアでゲームの最高性能を維持するために様々な機能の品質を調整することができます。
拡張設定
エディタの [Scalability (拡張)] 設定は、ツールバーの [Settings (設定)] メニューからアクセスします。[Engine Scalability Settings (エンジンの拡張設定)] には BaseScalability.ini ファイルで定義された、一般的に使用する設定へのショートカットが含まれています。[Material Quality Level (マテリアル品質レベル)] では、グローバル マテリアルの品質を設定します。
解像度スケール
Unreal Engine 4 はシーンのレンダリングは低解像度で行って、ターゲットの解像度まで画像をスケーリングすることができます。2D ユーザーインターフェースを使うと、通常は少ないパフォーマンス負荷ですみますが、解像度が低いことが問題になるため、Unreal Engine 4 はこの技術を UI に適用しません。アップサンプリングは多少の付加を伴いますが、使うに値する技術です。

左:50 % AA なし、中央 50 % AA 有り、右:100% (解像度スケーリングなし) AA 有り
滑らかな輪郭の入力画像はアップサンプリングのステップに役立ちます。つまり [Scalability] オプションは、アンチエイリアシング品質など、別の拡張性オプションからの恩恵を受けます。
この設定は、r.ScreenPercentage コンソール変数でアクセスが可能です。10-100 の値を取り、 -1 は 100 %と同等になります。
表示距離
オブジェクトはビューアーへの距離に基づいてカリングすることができます。デフォルトでは、全オブジェクトは距離に基づいたカリングではありません (値 0 の最大描画距離が望ましい)。デザイナーが指定する値に加えて、グローバル拡張設定が乗算値のように機能します (r.ViewDistanceScale)。以下にグラス オブジェクトを示します (値 1000 の最大描画距離が望ましい)。

左: r.ViewDistanceScale 0.4、中央: r.ViewDistanceScale 0.7、右: r.ViewDistanceScale 1.0 (デフォルト)
アンチエイリアシング
左から: r.PostProcessAAQuality が 0 から 6。最初の 3 つの画像は、[View (表示)] -> [Scalability (拡張性)] オプション -> [AA] 設定の [Low]、[Medium]、[High/Epic] 設定と同等です。_
r.PostProcessAAQuality コンソール コマンドを使用してアンチエイリアシングの品質のレベルを調整すると、ユーザーが使用しているいずれかのアンチエイリアシング手法 (FXAA またはテンポラル アンチエイリアシング) で品質を調整します。いずれのアンチエイリアシング処理でも、r.PostProcessAAQuality に値 0 を使用するとエフェクトが無効になります。FXAA 手法のエフェクトに値 2、4、6 を使用したのが上記の画像です。ギザギザのエッジがスムージングによりどんどん良くなっています。6 以上の値は効果がありません。
テンポラル アンチエイリアシング手法は、高い値を使用すればするほどエフェクトの調整時間とその品質間にトレードオフが生じます。r.PostProcessAAQuality にテンポラル アンチエイリアシングを使用することで問題を解決できますが、エフェクトが原因で生じるジッターがより顕著に現れます。r.PostProcessAAQuality 4` で動作が多少遅くなりますが、ジッターは発生しません。
ポスト プロセス - sg.PostProcessQuality
sg.PostProcessQuality を、左から右へ 0 から 3 に設定
[View (表示)] -> [Engine Scalability Settings (エンジンの拡張設定)] -> [Post Processing (ポストプロセス)] オプションで、[UE_InstallPath]/Engine/Config フォルダに格納されている BaseScalaiblity.ini ファイルの設定に従ってポストプロセス エフェクトの品質を調整します。[Low] 設定は、sg.PostProcessQuality 0 に等しく、[Epic] は sg.PostProcessQuality 3 と同じです。
sg.PostProcessQuality 0 | sg.PostProcessQuality 1 |
---|---|
|
|
sg.PostProcessQuality 2 | sg.PostProcessQuality 3 |
---|---|
|
|
シャドウ - sg.ShadowQuality
sg.ShadowQuality を、左から右へ 0 から 3 に設定
[View (表示)] -> [Engine Scalability Settings (エンジンの拡張設定)] -> [Post Processing (ポストプロセス)] オプションで、 [UE_InstallPath]/Engine/Config フォルダに格納されている BaseScalaiblity.ini ファイルの設定に従ってポストプロセス エフェクトの品質を調整します。[Low] 設定は、sg.ShadowQuality 0 に等しく、[Epic] は sg.ShadowQuality 3 と同じです。
sg.ShadowQuality 0 | sg.ShadowQuality 1 |
---|---|
|
|
sg.ShadowQuality 2 | sg.ShadowQuality 3 |
---|---|
|
|
テクスチャ - sg.TextureQuality
最近のレンダリング エンジンは、大容量の GPU メモリを必要とします (テクスチャ、メッシュ、GBuffer、深度バッファ、シャドウマップ)。これらの一部はスクリーン解像度に対応しますが (例えば GBuffer)、その他は特定の品質の設定に対応します (例えばシャドウマップ)。その他の大部分は使用済みのテクスチャによってもたらされます (通常は圧縮およびストリーミング済み)。ストリーミング システムの管理をより積極的に指示したり (プールのサイズを小さく設定、未使用のテクスチャをカリング処理など)、ミップレベルの演算処理の詳細を少なくしたり多くする指示を出すことができます。テクスチャ ストリーミングのアーティファクトが現れる度合いや、ゲームの滑らかな実行状況など、画像品質にエフェクトを与えることができます (更新は負荷が高いメモリ転送を必要とします)。メディア (高速/低速ハードドライブやSSD) によって結果はさまざまです 。DVD/Blu-Ray からのストリーミングはさらに低速になるので、できるだけ避けてください。
テクスチャの品質は、テクスチャ フィルタリング モードにも影響を及ぼします (r.MaxAnisotropy)。テクスチャの異方性サンプリング数を制限すると、テクスチャ帯域幅は減少しますが、テクスチャ メモリの節約にはなりません。
sg.TextureQuality 0 | sg.TextureQuality 1 |
---|---|
|
|
sg.TextureQuality 2 | sg.TextureQuality 3 |
---|---|
|
|
この機能のエフェクトは、ユーザーのゲームおよびハードウェアに大きく依存します。フル解像度のミップマップのロードや利用に、アンリアル エンジン 4 がテクスチャに割り当てた全てのメモリープールを使用しない場合、ユーザーは実際には [High] または [Low] の設定の違いに気付きません ([Anisotropy] 設定の変更を除く)。
エフェクト - sg.EffectsQuality
[View (表示)] -> [Engine Scalability Settings (エンジン拡張の設定)] -> [Effects] オプションで、[UE_InstallPath]/Engine/Config
フォルダに格納されている BaseScalaiblity.ini ファイルの設定に従ってさまざまなタイプのエフェクト品質を調整します。[Low] 設定は、sg.EffectsQuality 0 に等しく、[Epic] は sg.EffectsQuality 3 と同じです。
sg.EffectsQuality 0 | sg.EffectsQuality 1 |
---|---|
|
|
sg.EffectsQuality 2 | sg.EffectsQuality 3 |
---|---|
|
|
詳細モード
配置されたそれぞれのアクタには、[Rendering] カテゴリに Detail Mode プロパティがあります。この設定は、基本的にアクタがレンダリングするための最低限の詳細レベルを定義します。

Scalability (拡張) モードはコンソールから変更できます。
r.DetailMode 1
詳細モードは、r.DetailMode 0 が low、r.DetailMode 1 が medium、そして r.DetailMode 2 が high になります。

このモードで、デカール、詳細オブジェクト、ライト、または個々のパーティクルエフェクトを簡単に無効にできます。必ずゲームプレイに影響を及ぼさないオブジェクトのみに使用してください。そうでない場合、ネットワークゲームプレイ、保存したゲーム、または整合性などに問題が生じます。
マテリアルの品質レベル

マテリアルに Quality Switch マテリアル表現式ノードを使用して、最終イメージへの影響が少ない負荷の高いマテリアル部分を無効にすることができます。このエフェクトを見るには、Low Quality モードを低く切り替えなくてはいけません。
Material Quality Level が low または high のどちらに設定されていても、このマテリアルに対して評価される表現式が判断されます (low または high ピン)。入力が無い場合、デフォルトピンが high または low (もしくは両方) のどちらかに設定されます。high に設定時は、マテリアルにはかなり高負荷のパーリン ノイズオペレーションが 2 つ含まれます。
この例は単に Material Switch ノード を示すためのものです。Noise ノードは非常に負荷が高く、この例には適していますが、このエフェクトを得るには負荷が低い方法があるため控え目に使用してください。
マテリアルの品質レベル -\> Low
[/REGION] [REGION:float_left half]マテリアルの品質レベル -\> High
[/REGION]上記の Shader Complexity モードは、高品質のマテリアルが他のシェーダーよりも高コストであることを示します。緑の濃さは、シェーダーが高負荷であることを示しています。
クオリティスイッチを使用すると、より多くのシェーダーをコンパイルします (シェーダーの置換)。
2 つのクオリティレベルを同時に持つことはできないため、この機能は距離に基づいた LOD には適していません。この機能は以下の削減に使用します。
- シェーダーの演算処理(例えば不明瞭なレイヤーの無効化)
- 最適化の検証に [Shader Complexity] (エディタでは Alt+8 キー) モードと命令カウントの使用
- テクスチャ ルックアップ (詳細なバンプマップ無し、など)
- メモリ帯域 (テクスチャを少なめに使用、など)
- 検証のために実際のハードウェアでプロファイリングしなくてはいけません
ほとんどのマテリアルエディタの出力は、ピクセルシェーダーのみに影響を及ぼします。world position offset と全てのテッセレーション出力は、他のシェーダータイプに影響を及ぼします。ピクセル シェーダーは画面の大部分を占領した場合のみ高負荷となります (例、スカイボックス)。一方で、他のシェーダーはオブジェクトがカリングされていない場合のみ問題となります(ビュー内部で不透明なオブジェクトの背後で非表示になっていない場合)。
スケルタル メッシュ LOD バイアス

スケルタルメッシュは詳細モデルの静的レベルを持つことができます。コンソール変数 r.SkeletalMeshLODBias でグローバルに LOD レベルにバイアスをかけることが可能です。最初または 2 番目の LOD の品質によっては、このオプションを [Scalability] 設定に入れるといいかもしれません。上記の画像は、距離に基づいた LOD の拡張機能設定を示すものです。
グラス (草) とフォリッジの拡張機能
[View (表示)] -> [Engine Scalability Settings (エンジンの拡張設定)] -> [Foliage] オプションで、[UE_InstallPath]/Engine/Config フォルダに格納されている BaseScalaiblity.ini ファイルの設定に従って一度にレンダリングするフォリッジ メッシュ数を調節します。[Low] 設定は、FoliageQuality 0 に等しく、[Epic] は FoliageQuality 3 と同じです。
[region:note]フォリッジ スタティックメッシュに拡張設定を使うには、[Enable Density Scaling (密度のスケールを有効にする)] オプションを有効にする必要があります。設定の詳細は フォーリッジ インスタンス メッシュ を参照してください。
[/region]FoliageQuality 0 | FoliageQuality 1 |
---|---|
|
|
FoliageQuality 2 | FoliageQuality 3 |
---|---|
|
|
拡張性の設定をカスタマイズする
Unreal Engine プロジェクトで使用する拡張性の設定をカスタマイズすることが可能です。例を使って、フォリッジの拡張性設定に追加および変更を行います。以下の手順で行います。
-
プロジェクトの 「Config」 フォルダを開いて、DefaultScalability.ini という名前の .INI を新規作成します。
-
新規作成した 「DefaultScalability.ini」 ファイルを開いて、以下のコードの行を追加します。
[FoliageQuality@0] foliage.DensityScale=.25 grass.DensityScale=.25 [FoliageQuality@1] foliage.DensityScale=0.50 grass.DensityScale=0.50 [FoliageQuality@2] foliage.DensityScale=0.75 grass.DensityScale=0.75 [FoliageQuality@3] foliage.DensityScale=1.0 grass.DensityScale=1.0
-
フィールドを保存し、フォリッジ の拡張設定が変更されると、スポーンされるフォリッジとランドスケープ グラスのスタティックメッシュの量がその設定に合わせて増減します。