Unity では、レンダリングの画質を設定することができます。一般的に言えば、画質はフレームレートを犠牲にしています。そのため、モバイルデバイスや古いハードウェアで最高画質に指定することはゲームプレイに悪影響を与える場合もあるので、最良策とはいえません。Edit > Project Settings > Quality の順に選択して Quality Settings (画質設定) を開くと、デバイスごとの画質レベルを選択できます。主に 2 つの部分に分けられていて、設定画面の上部には以下のようなマトリクス表があります。
Unity では、簡単に参照できるように、画質オプションの組み合わせに名前をつけることができます。マトリクスの行で、各画質水準をどのプラットフォームに割り当てるかを選択することができます。マトリクスの一番下の Default の行は画質設定そのものはではありませんが、各プラットフォームで使用されるデフォルトの画質を設定します (列の緑のチェックボックスは、現在、そのプラットフォームに選択されたレベルを表します)。Unity では 6 つの画質が標準で設定されていますが、マトリクスの下にあるボタンを使用してカスタムのレベルを追加することができます。ゴミ箱アイコン (右端の列) を使用することで不要な画質設定を削除することができます。
画質レベルの名前をクリックすると、それを編集することができます。これは設定のマトリクスの下のパネルで設定します。
画質設定のために選ぶことができる画質オプションは次のとおりです。
プロパティー | 機能 |
---|---|
Name | 画質設定を参照するときに使用する名前 |
プロパティー | 機能 |
---|---|
Pixel Light Count | フォワードレンダリング使用時の最大ピクセルライト数 |
Texture Quality | テクスチャを最大解像度で表示するか、何分の一かで表示するかを選択します(解像度が低い場合は処理オーバーヘッドを減少させます)。選択肢は Full Res (フル解像度),Half Res ( 1/2 解像度),Quarter Res ( 1/4 解像度),Eighth Res ( 1/8 解像度) です。 |
Anisotropic Textures | 異方性テクスチャの使い方を設定します。 Disabled (無効)、 Per Texture (テクスチャ毎) 、 Forced On(強制、つまり常に有効) のオプションがあります。 |
AntiAliasing | アンチエイリアシングのレベルを設定します。選択肢は 2x、4x、8x のマルチサンプリングです。 |
Soft Particles | ソフトブレンドをパーティクルに使用するかどうか。 |
Realtime Reflection Probes | ゲーム再生中にリフレクションプローブを更新するかどうか。 |
プロパティー | 機能 |
---|---|
Shadows | 使用する影のタイプを選択します。選択オプションは、Hard and Soft Shadows、 Hard Shadows Only、 Disable Shadows です。 |
Shadow resolution | 影は異なる解像度でレンダリングすることができます。解像度が高いほど、処理オーバーヘッドは大きくなります。選択オプションは Low,Medium,High,Very High です。 |
Shadow Projection | ディレクショナルライトから影を投影するには 2 つの方法があります。Close Fit は高解像度の影をレンダリングしますが、カメラのわずかな動きで揺れることがあります。Stable Fit は、低解像度の影をレンダリングしますが、カメラの動きでは揺れません。 |
Shadow Cascades | シャドウカスケードの数は 0, 2, 4 に設定することができます。カスケードの数値が高いほど高品質が得られますが、処理オーバーヘッドが増加します (詳細は ディレクショナルライトの影 を参照してください)。 |
Shadow Distance | カメラから影が見える距離範囲。この距離を越えて投影される影はレンダリングされません。 |
Shadowmask Mode | Shadowmask の Mixed lighting モードを使用するときにシャドウマスクの挙動を設定します。シーンで設定するには、Lighting ウィンドウ ( Window > Lighting > Settings) を使用します。 |
Distance Shadowmask | Unity は Shadow Distance に達するまでリアルタイムの影を使用し、それを超える場合はベイクした影を使用します。 |
Shadowmask | 影を投影する静的ゲームオブジェクトは、常にベイクした影を投影します。 |
Shadow Near Plane Offset | シャドウパンケーキ(丸影)で歪む大きな三角形を考慮した前方クリップ面のオフセット |
プロパティー | 機能 |
---|---|
Blend Weights | アニメーションのときに指定した頂点に影響を与えることができるボーンの数。使用可能なオプションは、1, 2, 4 つのボーンです。 |
VSync Count | レンダリング処理をディスプレイのリフレッシュレートと同期させることでティアリングによる画像乱れ (下記参照) を避けることができます。Every V Blank (すべての垂直ブランク (VBlank)と同期)、Every Second V Blank (1 つおきに VBlank と同期)、Don’t Sync (まったく同期しない) から選択することができます。 |
LOD Bias | LOD レベルはオブジェクトの画面表示サイズを基準に選択されます。表示サイズが2つの LOD レベルの間にあるとき、用意された2つのモデルからディティールの少ない方にするか、多い方にするか、選択を一方によせる事ができます。これは0から無限大までの実数として設定します。0から1の間に設定すると、細かいディティールを省こうとします。1以上に設定すると、ディティールを増やそうとします。例えば、LOD バイアスを2に設定し、50%の間隔で変わるようにすると、LOD はちょうど25%でのみ変わります。 |
Maximum LOD Level | ゲームで使用される最大の LOD。詳細については以下を参照してください。 |
Particle Raycast Budget | パーティクルシステムの衝突のために使用するレイキャストの最大数 (Medium か Low の品質)。パーティクルシステム を参照してください。 |
Async Upload Time Slice | バッファされたテクスチャを GPU にアップロードするための CPU 時間 (ミリ秒/フレーム)。非同期テクスチャアップロード を参照してください。 |
Async Upload Buffer Size | 非同期アップロード バッファのサイズ (MB)。非同期テクスチャアップロード を参照してください。 |
これより低い LOD を持つモデルは使用されず、ビルド対象から外れます (ストレージとメモリ容量の節約のため)。Unity はターゲットプラットフォームの画面設定で関連づけられたすべての MaximumLOD 値からもっとも低い値を使用します。もし LOD Level 0 がいずれかの画質設定で使用されている場合、その画質設定に関わらず、すべての LOD レベルがビルドに含まれ、その LOD グループのランタイムには常にロードされます。例えば、もし LOD level 0 がある画質設定に含まれている場合、すべての LOD レベルがビルドに含まれ、すべての参照されるモデルはランタイムにロードされます。
ディスプレイ上の画像は継続的に更新されるのではなく、Unity のフレーム更新のように定期的な間隔で更新されます。しかし、Unity の更新は必ずしもディスプレイと同期しているとは限りません。そのため、ディスプレイがまだ前のフレームをレンダリングしている最中に Unity が新しいフレームを生成してしまうことがあります。この場合、フレームの変更が発生した画面の中央に「ティアリング」と呼ばれる目に見える画像の乱れが発生します。
Unity の設定により、ディスプレイが更新していない時間、いわゆる垂直ブランク (vertical blank、VBlank) のときにフレームを切替えることができます。Quality Settings の VSync オプションによって、フレームの切替えをディスプレイの VBlank のときに切り替える 、または 1 つおきの VBlank と同期をとることができます。後者は、フレームのレンダリングに複数のデバイスを更新する必要がある場合に役に立ちます。
アンチエイリアス処理により、ポリゴンのエッジの見た目が改善されるため、「ジャギー」のない滑らかな輪郭になります。しかし、グラフィックカードのパフォーマンスが犠牲になり、ビデオメモリの使用量が増えます (CPU の負担は増えません)。アンチエイリアス処理のレベルにより、ポリゴンのエッジがどのくらい滑らかになるか (かつ、消費されるビデオメモリの量) が決定されます。
ただし、ビルトインのハードウェアアンチエイリアスは デファードシェーディング や HDR レンダリングと使用できません。このような場合は、Antialiasing 画像エフェクト が必要です。
ソフトパーティクルは、シーン中の物体同士の交点付近をフェードアウト処理します。見た目は良くなりますが、計算処理の負荷は高くなり(複雑なピクセルシェーダー)、かつ カメラの深度テクスチャ をサポートしているプラットフォームでしか動作しません。さらにレンダリングパスとして 旧 Deferred Lighting レンダリングパス を使用するか、あるいはスクリプトで、カメラのレンダラーを 深度テクスチャ とする必要があります。