まれに、特定のゲームオブジェクトと SRP バッチャーとの互換性を意図的に排除したい場合があります。例えば、SRP バッチャーと互換性がない GPU インスタンスシング を使いたい場合です。全く同じマテリアルで多数の同じメッシュをレンダリングする場合、GPU インスタ ンシングの方が SRP バッチャーよりも効率的な場合があります。GPU インスタンシングを使用するには、以下のいずれかの対応が必要です。
ゲームオブジェクトから SRP バッチャーとの互換性を除くには、2 つの方法があります。
ヒント: SRP バッチャーの代わりに GPU インスタンシングを使用する場合は、プロファイラー を使用することで、SRP バッチャーよりも GPU インスタンシングの方がアプリケーションに対する効率が確実に高くなります。
手書きシェーダーと Shader Graph シェーダーのどちらも、SRP バッチャーとの互換性をなくすことができます。ただし、Shader Graph を頻繁に変更して再コンパイルする Shader Graph シェーダーの場合は、レンダラーの互換性を排除する 方が簡単です。
Unity シェーダーを SRP バッチャーに非対応にするには、シェーダーソースファイルを変更する必要があります。
Properties ブロックに新しい マテリアルプロパティ の宣言を追加します。UnityPerMaterial 定数バッファで新しいマテリアルプロパティを宣言しないでください。マテリアルプロパティには何もする必要がありません。UnityPerMaterial 定数バッファに存在しないマテリアルプロパティを用意するだけで、そのシェーダーと SRP バッチャーとの互換性はなくなります。
注意: Shader Graph を使用する場合、Shader Graph を編集して再コンパイルするたびに、このプロセスを繰り返さなければならないことに注意してください。
各レンダラーと SRP バッチャーとの互換性を排除できます。それには、レンダラーに MaterialPropertyBlock を加えます。