Skip to content

スケーラーリファレンス (Scaler Reference)

Web Adaptive Performance には、専用のスケーラー(最適化モジュール)のセットが含まれています。インデクサー(Indexer)は、視覚的な影響度(Visual Impact)と現在のボトルネックの種類(Target: CPUまたはGPU)に基づいて、実装するスケーラーを自動的に選択します。

互換性マトリックス

以下は、互換性マトリックスと利用可能なすべてのモジュールの説明です。

スケーラーパイプラインTarget説明
ResolutionBiRP URPGPUレンダリング解像度を下げ、GPUのフィルレート(Fillrate)の負荷を根本的に減らします。詳細は以下を参照してください。
Shadows QualityBiRP URPGPUシャドウを段階的に無効にします。
URPでは、最初にソフトシャドウを無効にし、次に追加ライトのシャドウを無効にし、最後にメインのシャドウを無効にします。
BiRPでは、完全に無効にする前に、シャドウを Hard Only モードに切り替えます。
Shadow CascadesBiRP URPCPU/GPUシャドウのカスケー​​ド数を減らします。CPUのドローコール(Draw Calls)とGPUの負荷を軽減します。
Shadow DistanceBiRP URPGPUシャドウの描画距離(Draw Distance)を短くします。
Shadow ResolutionBiRP URPGPUシャドウマップの解像度を下げます。
Anti AliasingBiRP URPGPUアンチエイリアス(MSAA)の品質を、完全に無効になるまで下げます。
LOD BiasBiRP URPGPUカメラからのより短い距離で、低ポリゴンのLODモデルに切り替えるようUnityに強制します。
Camera ClipBiRP URPGPUターゲットカメラの Far Clip Plane パラメータを下げ、遠くのオブジェクトをレンダリングから除外します。
Layer CullingBiRP URPCPU特定のオブジェクトレイヤーのカリング距離(Culling Distance)を比例的に減らします。
Physics StepBiRP URPCPU物理計算の頻度を減らします。ブラウザで重い物理負荷がかかった際に、パフォーマンスを節約します。
LUTURPのみGPUColor Grading LUTテーブルのサイズを最小限に縮小します。
Mesh LOD ThresholdUnity 6+GPU積極的なLOD変更のために、Unity 6.2で導入された meshLodThreshold パラメータを変更します。

Physics Step Scaler に関する注意

物理スケーラーは Time.fixedDeltaTime パラメータを直接変更します。キャラクターコントローラーやゲームのメカニクスが補間(Interpolation)なしの固定物理フレームに厳密に依存している場合、低品質レベルではオブジェクトの動きがカクつく(スタッターする)可能性があります。

スケーラー設定のリセット

スケーラーのパラメータ(Min BoundMax Level の変更など)を試した後、デフォルト値に戻したい場合は、Project Settings ウィンドウでそのスイッチをオフにして再度オンにするだけです。プラグインは自動的にベース設定でモジュールを再作成します。

深掘り: Resolution Scaler

これはプラグイン内で最も強力なツールであり、最大のFPS向上を保証します。その動作は、アクティブなパイプラインによって大きく異なります。

URP (Universal Render Pipeline) モード

URPでは、スケーリングは完璧に機能します。プラグインは UniversalRenderPipelineAssetrenderScale プロパティに直接介入します。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 (推奨)

最も簡単で信頼性の高い方法です。プラグインがすべての作業を自動的に処理します。

  1. シーンの階層で Canvas を選択します。
  2. Canvasコンポーネントで、Render ModeScreen Space - Overlay に設定します。
    結果: Unityは、圧縮された3Dワールドの上に、100%ネイティブな解像度でインターフェースをレンダリングします。

オプション 2: Screen Space - Camera (複雑なレイヤー用)

3Dモデル、パーティクル、およびUIを混在させる必要がある場合に使用されます。レンダリングを2つのカメラに分ける必要があります。

  1. メインカメラ (3D): そのタグがスケーラーの Target Tags 配列に指定されていることを確認してください。Culling Mask フィールドで UI レイヤーのチェックを外します。Depth0 に設定します。
  2. UIカメラ (新規): インターフェースをレンダリングするための新しいカメラを作成します。そのタグをスケーラー設定に追加しないでください
    • Clear FlagsDepth Only に設定します(カメラが3Dの背景を消去しないようにするため)。
    • Culling MaskUI レイヤーのみに設定します。
    • Depth1 に設定します(メインカメラよりも大きくします)。
  3. Canvas設定: Render ModeScreen Space - Camera に設定し、新しいUIカメラを Render Camera スロットにドラッグします。