Version: Unity 6.0 (6000.0)
言語 : 日本語
シェーダーバリアントの概要
シェーダーバリアントのストリッピング

シェーダーバリアントの数の確認

ロギングとプロファイリングのツールを使用して、Unity がコンパイルするシェーダーバリアントの数を確認できます。また、ビルド時間を短縮してメモリ使用量を削減するためにバリアントを削除 (ストリッピング) する方法を見つけることができます。以下の操作を行うことができます。

エディターが使用するシェーダーバリアントのリストを取得する

エディターがシーンビューとゲームビューで使用する、シェーダーバリアントのリストを生成することができます。手順は以下のとおりです。

  1. Edit > Project Settings > Graphics に移動します。
  2. Shader Loading の下の Currently tracked: の横で、シェーダーとシェーダーバリアントの数を確認できます。
  3. Save to asset… を選択して、シェーダーバリアントコレクションアセットを作成します。

ビルド時に Unity が作成するシェーダーバリアントのリストを取得する

プロジェクトをビルドした後で、Editor.log ログファイルを開き、Compiling shader を検索すると、Unity がどのバリアントをコンパイルおよび除去しているか確認できます。 例:

Compiling shader "Sprites/Default" pass "" (vp)
    Full variant space:         8
    After settings filtering:   8
    After built-in stripping:   4
    After scriptable stripping: 4
    Processed in 0.00 seconds
    starting compilation...
    finished in 0.03 seconds. Local cache hits 0 (0.00s CPU time), remote cache hits 0 (0.00s CPU time), compiled 4 variants (0.09s CPU time), skipped 0 variants
    Prepared data for serialisation in 0.00s

ユニバーサルレンダーパイプライン (URP) または HD レンダーパイプライン (HDRP) を使用する場合は、以下を参照してください。

ランタイムに Unity がコンパイルするシェーダーバリアントのリストを取得する

  1. Edit > Project Settings > Graphics に移動します。
  2. Shader Loading の下で Log Shader Compilation を有効にします。
  3. プロジェクトをビルドする際は、Build SettingsDevelopment Build を有効にします。
  4. Console ウィンドウ で、Editor を選択し、Full Log [Developer Mode Only] を有効にします。
  5. ビルドしたアプリケーションを起動します。

Unity は、GPU 用にシェーダーをコンパイルすると、Console ウィンドウに Compiled shader というメッセージを表示します。

ランタイムでシェーダーが使用するメモリの量を確認する

Memory Profiler モジュールまたは Memory Profiler パッケージを使用して、ランタイムに使用しているメモリシェーダーの量を確認します。シェーダーが大量のメモリを使用している場合は、そのバリアントの除去を試みることが可能です。

ランタイムでシェーダー欠落を強調表示する

Unity 2022.2 以降では、欠落したシェーダーバリアントをマテリアルが使用しようとする場合に、Unity に強制的にランタイムでピンクのエラーシェーダーを表示させることができます。

  1. Edit > Project Settings > Player に移動します。
  2. Other Settings の下の Shader Settings セクション内で、Strict shader variant matching を選択します。

これは、strictShaderVariantMatching を使用して C# スクリプトでも有効にできます。

これを行うと、Unity が、欠落したバリアントとそのキーワードを示す警告をコンソールに表示します。これをストリッピング中に使用することで、プロジェクトが必要とするシェーダーバリアントが除去されていないかどうかを確認できます。

シェーダーバリアントの概要
シェーダーバリアントのストリッピング