Version: 2021.3
言語: 日本語
マテリアルインスペクターでのシェーダーキーワードの使用
シェーダーバリアントコレクション

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

シェーダーバリアント のコンパイルを避けることができます。これは ストリッピング と呼ばれます。不要なバリアントを取り除くことで、ビルド時間、ファイルサイズ、シェーダーのロード時間、ランタイムのメモリ使用量を大幅に削減できます。大規模なプロジェクトや複雑なシェーダーを持つプロジェクトでは、これは非常に重要な考慮事項です。

シェーダーキーワードを宣言する際のシェーダーバリアントの制限

以下のシェーダーキーワードの宣言方法によって、生成されるバリアントの数を制限することができます。

  • multi_compile の代わりに shader_feature を可能な限り使用します。
  • multi_compile で使わないキーワードを定義しないようにします。
  • シェーダーキーワードが特定のシェーダーステージにのみ影響する場合を示します。

ハンドコーディングされたシェーダーでこれを行う方法については、HLSL でのシェーダーキーワードの宣言と使用 を参照してください。Shader Graph での実行については、[Shader Graph ブラックボード]を参照してください。Blackboard](https://docs.unity3d.com/Packages/com.unity.shadergraph@latest?subfolder=/manual/Blackboard.html) を参照してください。

エディター UI でのシェーダーバリアントのストリッピング

Unity エディターの UI には、シェーダーストリッピングを設定できる箇所がいくつかあります。

  • Graphics Settings ウィンドウ で、Shader stripping セクションの設定を行います。
  • Always-included shaders 設定で、必要のないシェーダーが含まれないようにします 。
  • GPU インスタンス化、ライトマッピング、フォグに関連するバリアントを除去します。
  • ビルトインレンダーパイプラインでは、階層設定が違うことが重要でない場合は、お互いに同じ階層設定にしてください。詳しくは、グラフィックスの階層 を参照してください。
  • ユニバーサルレンダーパイプライン (URP)では、URP アセットで使用しない機能を無効にします。詳細は、シェーダーストリッピング を参照してください。

エディタースクリプトを使ったシェーダーバリアントのストリッピング

他の方法では除去できないシェーダーバリアントについては、エディタースクリプトで以下の API を使用してビルド時のストリッピングを行うことができます。

ストリッピングについての詳細は、Unity のブログ スクリプタブルシェーダーバリアントの除去 を参照してください。

マテリアルインスペクターでのシェーダーキーワードの使用
シェーダーバリアントコレクション