スケーラーリファレンス (Scaler Reference)
Web Adaptive Performance には、専用のスケーラー(最適化モジュール)のセットが含まれています。インデクサー(Indexer)は、視覚的な影響度(Visual Impact)と現在のボトルネックの種類(Target: CPUまたはGPU)に基づいて、実装するスケーラーを自動的に選択します。
互換性マトリックス
以下は、互換性マトリックスと利用可能なすべてのモジュールの説明です。
| スケーラー | パイプライン | Target | 説明 |
|---|---|---|---|
| Resolution | BiRP URP | GPU | レンダリング解像度を下げ、GPUのフィルレート(Fillrate)の負荷を根本的に減らします。詳細は以下を参照してください。 |
| Shadows Quality | BiRP URP | GPU | シャドウを段階的に無効にします。 URPでは、最初にソフトシャドウを無効にし、次に追加ライトのシャドウを無効にし、最後にメインのシャドウを無効にします。 BiRPでは、完全に無効にする前に、シャドウを Hard Only モードに切り替えます。 |
| Shadow Cascades | BiRP URP | CPU/GPU | シャドウのカスケード数を減らします。CPUのドローコール(Draw Calls)とGPUの負荷を軽減します。 |
| Shadow Distance | BiRP URP | GPU | シャドウの描画距離(Draw Distance)を短くします。 |
| Shadow Resolution | BiRP URP | GPU | シャドウマップの解像度を下げます。 |
| Anti Aliasing | BiRP URP | GPU | アンチエイリアス(MSAA)の品質を、完全に無効になるまで下げます。 |
| LOD Bias | BiRP URP | GPU | カメラからのより短い距離で、低ポリゴンのLODモデルに切り替えるようUnityに強制します。 |
| Camera Clip | BiRP URP | GPU | ターゲットカメラの Far Clip Plane パラメータを下げ、遠くのオブジェクトをレンダリングから除外します。 |
| Layer Culling | BiRP URP | CPU | 特定のオブジェクトレイヤーのカリング距離(Culling Distance)を比例的に減らします。 |
| Physics Step | BiRP URP | CPU | 物理計算の頻度を減らします。ブラウザで重い物理負荷がかかった際に、パフォーマンスを節約します。 |
| LUT | URPのみ | GPU | Color Grading LUTテーブルのサイズを最小限に縮小します。 |
| Mesh LOD Threshold | Unity 6+ | GPU | 積極的なLOD変更のために、Unity 6.2で導入された meshLodThreshold パラメータを変更します。 |
Physics Step Scaler に関する注意
物理スケーラーは Time.fixedDeltaTime パラメータを直接変更します。キャラクターコントローラーやゲームのメカニクスが補間(Interpolation)なしの固定物理フレームに厳密に依存している場合、低品質レベルではオブジェクトの動きがカクつく(スタッターする)可能性があります。
スケーラー設定のリセット
スケーラーのパラメータ(Min Bound や Max Level の変更など)を試した後、デフォルト値に戻したい場合は、Project Settings ウィンドウでそのスイッチをオフにして再度オンにするだけです。プラグインは自動的にベース設定でモジュールを再作成します。
深掘り: Resolution Scaler
これはプラグイン内で最も強力なツールであり、最大のFPS向上を保証します。その動作は、アクティブなパイプラインによって大きく異なります。
URP (Universal Render Pipeline) モード
URPでは、スケーリングは完璧に機能します。プラグインは UniversalRenderPipelineAsset の renderScale プロパティに直接介入します。URPはスケールされた3Dワールドの上にCanvasをレンダリングできるため、インターフェース(UI)は自動的に鮮明に保たれます。
BiRP (Built-in Render Pipeline) モード
歴史的に、BiRPにはインターフェースを壊したりグリッチ(FBO Feedback Loop)を引き起こしたりすることなくWebGLで機能する組み込みのRender Scale設定がありません。WebAPは2つの独自の戦略を提供することでこれを解決します。
モード 1: NativeBrowserScaling (ネイティブブラウザスケーリング)
プラグインは、ネイティブループスプーフィング(ブラウザの devicePixelRatio パラメータへの注入)を介して <canvas> HTML要素を直接スケールします。
- 長所: 最高のパフォーマンス。GPU側のオーバーヘッドはゼロです。
- 短所: ゲームのインターフェースが3Dグラフィックと共にぼやけます。このモードはコンパイルされたWebGLビルドでのみ機能します(Unity Editor内では変更は表示されません)。
モード 2: RenderTextureScaling
プラグインは、ターゲットカメラのレンダリングを圧縮された共有テクスチャにリダイレクトし、非表示の合成カメラ(Compositor Camera)を使用して画像を表示します。
- 長所: 3Dワールドはスケールされますが、UI(テキスト、ボタン)は鮮明なままです。
- 短所: Blit操作(テクスチャを画面にコピーする処理)により、GPUにわずかな負荷が追加されます。
マウスクリック (Raycasts) の修正
RenderTextureScalingを使用する場合、仮想画面座標が圧縮されます。3Dオブジェクトへのマウスクリックが引き続き正しく機能するように、プラグインは自動的にターゲットカメラの標準的な PhysicsRaycaster および Physics2DRaycaster コンポーネントを、カスタムの WebScaledPhysicsRaycaster コンポーネントに置き換えます。光線の精度は、どのスケールでも完璧に維持されます。
UIの明瞭さを維持する方法 (BiRP RenderTextureScaling用)
RenderTextureScalingを使用してBiRPで3Dグラフィックをスケーリングしながら、鮮明なインターフェースを維持するには、Canvasを正しく設定する必要があります。次の2つのオプションのいずれかを選択してください:
オプション 1: Screen Space - Overlay (推奨)
最も簡単で信頼性の高い方法です。プラグインがすべての作業を自動的に処理します。
- シーンの階層で Canvas を選択します。
- Canvasコンポーネントで、Render Mode を
Screen Space - Overlayに設定します。
結果: Unityは、圧縮された3Dワールドの上に、100%ネイティブな解像度でインターフェースをレンダリングします。
オプション 2: Screen Space - Camera (複雑なレイヤー用)
3Dモデル、パーティクル、およびUIを混在させる必要がある場合に使用されます。レンダリングを2つのカメラに分ける必要があります。
- メインカメラ (3D): そのタグがスケーラーの
Target Tags配列に指定されていることを確認してください。Culling Maskフィールドで UI レイヤーのチェックを外します。Depthを0に設定します。 - UIカメラ (新規): インターフェースをレンダリングするための新しいカメラを作成します。そのタグをスケーラー設定に追加しないでください。
Clear FlagsをDepth Onlyに設定します(カメラが3Dの背景を消去しないようにするため)。Culling Maskを UI レイヤーのみに設定します。Depthを1に設定します(メインカメラよりも大きくします)。
- Canvas設定: Render Mode を
Screen Space - Cameraに設定し、新しいUIカメラをRender Cameraスロットにドラッグします。
