Unityでは、描画しようとするグラフィカルな品質のレベルを設定することができます。一般的に言えば、品質はフレームレートを犠牲にするため、モバイルデバイスや古いハードウェアで最高品質を目指すのは避けた方がよいでしょう。なぜなら、ゲームに悪影響を与える傾向があるからです。 Quality (品質) 設定 (Edit> Project Settings の順に移動し、Quality カテゴリを選択) を使用して、選択したデバイスに適したエディターの品質レベルを選択します。Quality 設定は2 つの主要エリアに分かれています。Quality マトリックスが上部に表示され、その下に、選択した画質レベルの設定が表示されます。
Unity では、簡単に参照できるように、画質オプションの組み合わせに名前をつけることができます。マトリックスの行で、各品質レベルをどのプラットフォームに割り当てるかを選択することができます。マトリックスの一番下の Default の行は画質設定そのものはではありませんが、各プラットフォームで使用されるデフォルトの品質を設定します (列の緑のチェックボックスは、現在、そのプラットフォームに選択されたレベルを表します)。Unity では 6 つの品質が標準で既に使用可能ですが、マトリックスの下にあるボタンを使用して 独自のレベルを追加 することができます。
不要な品質レベルを削除するには、ごみ箱のアイコン (右端) を使用します。
編集の品質レベルを選択するには、マトリックスでその名前をクリックします。その定義は設定の下のパネルに表示され、必要に応じて設定を変更することができます。
新しい品質レベルを定義するには、Add Quality Level ボタンをクリックし、 Name プロパティボックスに新しいレベルの名前を入力します。
次に、以下のセクションで説明する品質オプションのうち、更新や設定を行うものを選択します。
プロパティ | 機能 |
---|---|
Pixel Light Count | Unity が フォワードレンダリング を使用するときの、ピクセルライトの最大数を設定します。 |
Texture Quality | テクスチャを最大解像度で表示するか、何分の一かで表示するかを選択します(解像度が低い場合は処理オーバーヘッドを減少させます)。選択肢は Full Res (フル解像度)、Half Res (1/2 解像度)、Quarter Res (1/4 解像度)、Eighth Res (1/8 解像度) です。 |
Anisotropic Textures | Unity が異方性テクスチャの使用方法を設定します。オプションは Disabled (無効)、Per Texture (テクスチャ毎)、Forced On (強制、つまり常に有効) です。 |
AntiAliasing | Unityが使用する アンチエイリアス のレベルを選択します。選択肢はDisabled (無効)、2x Multi Sampling、4x Multi Sampling、8x Multi Samplingです。 |
Soft Particles | これを有効にすると、パーティクルにソフトブレンディングを使用します。詳細は ソフトパーティクル を参照してください。 |
Realtime Reflection Probes | これを有効にすると、ゲーム中に リフレクションプローブ を更新します。 |
Billboards Face Camera Position | これを有効にすると、レンダリング中に、カメラ面の代わりにビルボードがカメラに正面を向けるよう強制します。これにより、より良い、より現実的な画像が生成されますが、レンダリングするのがより高負荷になります。 |
Resolution Scaling Fixed DPI Factor | デバイスの画面解像度を元の解像度よりダウンスケールします。詳細は、Android Player 設定と iOS Player 設定を参照してください。 |
Texture Streaming |
これを有効にすると、テクスチャストリーミング を使用します。テクスチャストリーミングを使用しない場合は、この機能を無効にして CPU メモリのオーバーヘッドを避けてください。 |
Add All Cameras | これを有効にすると、プロジェクト内のすべてのアクティブなカメラのテクスチャストリーミングを Unity が計算できるようになります。これはデフォルトで有効になっています。これは、既存のプロジェクトをテクスチャストリーミングに移行する最も簡単な方法です。特定のカメラを除外したい場合は、そのカメラに Streaming Controller コンポーネントを加え、次に、それを無効にします。 このプロパティを無効にすると、Unity は Streaming Controller コンポーネントを持つゲームオブジェクトのテクスチャストリーミングのみを計算します。この方法は、テクスチャストリーミングを細かく制御する場合に使用します。詳細は、テクスチャストリーミング API: テクスチャストリーミングのためのカメラ制御 を参照してください。 |
Memory Budget | ロードされたすべてのテクスチャに割り当てるメモリの総量を設定します (単位 MB)。容量が一杯になると、Unity は使用していないミップマップを破棄して、使用する必要のあるミップマップのためのスペースを確保します。デフォルトのメモリバジェットは 512MB です。 ストリーミングテクスチャは、メモリバジェットを満たすように、可能な限り小さなミップマップレベルを選びます。Unity は、バジェットを超える場合でも、非ストリーミングテクスチャを常にフル解像度でロードします。 ** メモリバジェット** には、非ストリーミングテクスチャが含まれます。例えば、バジェットが 100MB で、90MB の非ストリーミングテクスチャがある場合、テクスチャストリーミングシステムは、残りの 10MB にすべてのストリーミングテクスチャを収めようとします。それができない場合は、ミップマップは低い解像度でロードされます。 Unity は、Max Level Reduction を Memory Budget よりも優先します。テクスチャストリーミングシステムは、 Max Level Reduction よりも多くのミップマップを破棄することはありません。たとえ削減量の不足により、メモリがテクスチャストリーミングの Memory Budget を超えてしまったとしてもです。 |
Renderers Per Frame | メインスレッドと関連するジョブの CPU 処理オーバーヘッドを制御します。これはデフォルトでは 512 です (つまり、1 フレームにつき 512 のメッシュレンダラーを処理します)。値を低くすると処理時間が短縮されますが、ミップマップのロードが遅くなります。 |
Max Level Reduction | テクスチャストリーミングシステムが Memory Budget に達した場合に、テクスチャストリーミングシステムが破棄できるミップマップの最大数を設定します。デフォルトでは 2 に設定されています (つまり、システムは 2 つより多くミップマップを破棄することはありません)。 テクスチャストリーミングシステムは、ミップマップの破棄が不十分でメモリがテクスチャストリーミングの Memory Budget を超えてしまっても、この値よりも多くミップマップを破棄することはありません。 この値もまた、テクスチャストリーミングシステムが起動時に最初に読み込むミップマップレベルです。例えば、これが 2 に設定されている場合、最初に読み込まれた 2 つのミップマップはスキップされます。 |
Max IO Requests | 同時使用可能なテクスチャストリーミングシステムからのテクスチャファイルイン/アウト (IO) 要求の最大数を設定します。デフォルトで 1024 に設定されています。このデフォルトは、Async Upload pipeline、またはファイルシステム自体のために既にアクティブな IO の上限を超えないように、十分に高い値に設定されています。 シーンテクスチャコンテンツが大幅に短時間で変化すると、システムはファイル IO が追いつける数より多くのテクスチャミップマップを読み込もうとします。この値を小さくすると、テクスチャストリーミングシステムが生成する IO 帯域幅が小さくなります。その結果、ミップマップ要件の変更に対するより迅速な対応が可能になります。 |
アンチエイリアスはポリゴンのエッジの外観を改善するため、ポリゴンのエッジは「ギザギザ」ではなく、画面上で滑らかになります。ただし、グラフィックスカードのパフォーマンスにはコストがかかり、ビデオメモリを多く使用します (ただし、CPU のコストはかかりません)。アンチエイリアスのレベルによって、ポリゴンのエッジがどのくらい滑らかであるか (どのくらいビデオメモリを消費するか) が決まります。
ハードウェアアンチエイリアスは、ディファードシェーディング や HDR レンダリングと使用できません。アンチエイリアスの互換性については、ポストプロセス を参照してください。
ソフトパーティクルは、シーン中の物体との交点付近でフェードアウトします。見た目はずっと良くなりますが、計算処理の負荷は高くなり (より複雑なピクセルシェーダー)、かつ 深度テクスチャ をサポートするプラットフォームでしか動作しません。さらに、ディファードシェーディング か 古いディファードライティング レンダリングパスを使用するか、あるいはスクリプトで、カメラに 深度テクスチャ をレンダリングさせる必要があります。
ソフトパーティクルは、シーン中の物体との交点付近でフェードアウトします。見た目はずっと良くなりますが処理の負荷は高くなり、かつ 深度テクスチャ をサポートするプラットフォームでしか動作しません。さらに、ディファードシェーディング か 古いディファードライティング レンダリングパスを使用するか、あるいはスクリプトで、カメラに 深度テクスチャ をレンダリングさせる必要があります。
プロパティ | 機能 | |
---|---|---|
Shadowmask Mode | Shadowmask の Mixed lighting (混合ライティング) モードを使用するときのシャドウマスクの動作を選びます。シーンで設定するには、Lighting ウィンドウ (Window > Rendering > Lighting) を使用します。 | |
Distance Shadowmask | Unity は Shadow Distance に達するまでリアルタイムの影を使用し、それを超える場合はベイクした影を使用します。 | |
Shadowmask | シャドウを投影する静的ゲームオブジェクトは、常にベイクしたシャドウを投影します。 | |
Shadows | 使用するシャドウのタイプを選択します。使用可能な選択肢は Hard and Soft Shadows、Hard Shadows Only、Disable Shadows です。 | |
Shadow Resolution | シャドウをレンダリングする解像度を選択します。使用可能なオプションは Low Resolution、Medium Resolution、High Resolution、Very High Resolution です。解像度が高いほど、処理オーバーヘッドが大きくなります。 | |
Shadow Projection | シャドウをディレクショナルライトから投影するために使用する方法を選択します。 | |
Close Fit | より高い解像度のシャドウをレンダリングしますが、カメラが動くとシャドウがわずかに揺れることがあります。 | |
Stable Fit | 低解像度のシャドウをレンダリングしますが、カメラの動きでは揺れません。 | |
Shadow Distance | シャドウが表示されるカメラからの最大距離を入力します。 Unityは、この距離を超えたシャドウをレンダリングしません。 | |
Shadow Near Plane Offset | シャドウパンケーキで歪む大きな三角形を考慮した前方クリップ面のオフセットを設定します。 | |
Shadow Cascades | 使用するシャドウカスケードの数を選択します。可能なオプションは No Cascades (カスケード無し)、Two Cascades (2 つ)、Four Cascades (4 つ) です。カスケードの数を増やすと、品質は向上しますが、処理のオーバーヘッドは増加します (詳細は シャドウカスケード を参照してください)。 | |
Cascade splits | 各カスケード間の垂直線を左または右に動かすことによって、カスケードシャドウの分割を調整します。 Shadow Cascades 設定で選択した値に応じて、2 つまたは 4 つの異なる色で表示されます。Shadow Cascades が_No Cascades_ に設定されている場合、この制御全体が非表示になります。 |
プロパティ | 機能 |
---|---|
Blend Weights | アニメーション中に頂点に影響を与えるボーンの数を選択します。可能な選択肢は 1 Bone、2 Bones、4 Bones、Unlimited (無制限) です。 |
V Sync Count | 垂直の空白とレンダリングを同期するか、まったく同期させないかを選択します。 Unity は、レンダリングとディスプレイデバイスのリフレッシュレートを同期させてティアリングアーティファクトを防ぐ ことができます。可能な選択肢は Every V Blank、Every Second V Blank、Don’t Sync です。 |
Lod Bias | Level of Detail (LOD) バイアスを設定します。 LOD レベルは、オブジェクトの画面サイズに基づいて選択されます。サイズが 2 つの LOD レベルの間にある場合、その選択肢は 2 つの使用可能なモデルのより詳細でない傾向、または、より詳細な傾向に偏っている場合があります。この値は 0から +無限大の分数として設定されます。0 と 1 の間に設定すると、詳細さが減少します。1 より大きい値を設定すると、より詳細になります。例えば、LOD Bias を 2 に設定し、距離を50%に変更すると、LOD Bias は実際には 25% しか変化しません。 |
Maximum LOD Level | ゲームが使用する最高の LOD を設定します。詳細は最大LODレベル を参照してください。 |
Particle Raycast Budget | 近似パーティクルシステムの衝突のために使用する レイキャスト の最大数を設定します (Medium か Low の品質で)。パーティクルシステム衝突モジュール を参照してください。 |
Async Upload Time Slice | バッファリングされたテクスチャとメッシュデータデータを GPU にアップロードするのに費やす CPU 時間を、ミリ秒/フレーム単位で設定します。非同期テクスチャアップロード を参照してください。 |
Async Upload Buffer Size | GPU への テクスチャとメッシュデータのストリーミングに使用する Async Upload Buffer のサイズをメガバイト単位で設定します。非同期テクスチャアップロード を参照してください。 |
Unity は、LOD が Maximum LOD Level より低いモデルは使用せず、ビルド対象から外します (これにより、ストレージとメモリ容量が節約されます)。Unity はターゲットプラットフォームに対して Quality 設定で紐づけられたすべての MaximumLOD 値からもっとも低い値を使用します。LODレベルが含まれている場合、その LODGroup のモデルはビルドに含まれ、使用される Quality 設定にかかわらず、その LODGroup のランタイムに常にロードされます。例として、LOD レベル 0 が任意の Quality 設定で使用されると、すべての LOD レベルはビルドに含まれ、参照されるすべてのモデルはランタイムにロードされます。
ディスプレイ上の画像は継続的に更新されるのではなく、Unity のフレーム更新のように定期的な間隔で更新されます。しかし、Unity の更新は必ずしもディスプレイと同期しているとは限りません。そのため、ディスプレイがまだ前のフレームをレンダリングしている最中に Unity が新しいフレームを発行してしまう場合があります。この場合、フレームが変更された画面上に “ティアリング” と呼ばれる目に見える画像の乱れが発生します。
ディスプレイが更新されていない期間 (いわゆる “垂直ブランク”) にのみフレームを切り替えるように Unity を設定することが可能です。Quality 設定の V Sync Count オプションは、フレームのスイッチをデバイスの垂直ブランクと同期させます。または、任意で、ひとつおきの垂直ブランクごとに同期させることもできます。後者は、ゲームで、複数デバイスのフレームレンダリングの更新を必要とする場合に有用です。
2017–09–18 修正されたページ
Shadowmask Mode は2017.1 で追加NewIn20171