SetPassCalls
Set Pass Callsは、GPUが描画するために必要なマテリアルやシェーダーの状態を設定するための呼び出しです。このプロセスは、描画時にどのマテリアルとシェーダーを使うかをGPUに指示するもので、通常、以下のような点に関わります。
Set Pass Callsの仕組み
-
GPUの状態設定:
Set Pass Callは、特定のマテリアルやシェーダーをGPUに設定するために必要なもので、特に異なるマテリアルやシェーダーを切り替えるときに発生します。 -
描画呼び出しの前:
描画コールの前に、マテリアルやシェーダーの設定が必要であるため、各描画呼び出しの直前に発生します。つまり、同じマテリアルを持つオブジェクトを連続して描画する場合、最初の描画呼び出し時に1回のSet Pass Callが必要 で、その後同じマテリアルであれば追加のSet Pass Callは発生しません。
Set Pass Callsが発生する条件
-
異なるマテリアル:
異なるマテリアルを持つオブジェクトを描画する場合、それぞれのマテリアルに対してSet Pass Callが必要です。 -
異なるシェーダー:
異なるシェーダーを使用する場合も、新たにSet Pass Callが必要です。 -
マテリアルのプロパティが変更された場合:
マテリアルのプロパティ(例:色、テクスチャなど)が変更された場合も、再度Set Pass Callが発生します。
描画の効率化
-
バッチ処理:
Unityでは、描画の効率化のためにバッチ処理を行います。同じマテリアルやシェーダーを持つオブジェクトをまとめて描画することで、Set Pass Callsの回数を減少させます。これにより、描画パフォーマンスが向上します。 -
Static BatchingとDynamic Batching:
- Static Batching: 動かないオブジェクトに適用される。複数のオブジェクトが1つの大きなメッシュとして描画される。
- Dynamic Batching: 動くオブジェクトに対して適 用され、条件が満たされている場合に小さなオブジェクトがまとめて描画される。
まとめ
- Set Pass Callsは毎回呼ばれるわけではなく、描画の条件に応じて必要な時に発生します。
- 同じマテリアルであれば、再度Set Pass Callは発生しませんが、異なるマテリアルやシェーダーを使用する場合は新たに発生します。
- バッチ処理を使用することで、Set Pass Callsの数を減らし、描画効率を向上させることが可能です。
このように、Set Pass CallsはGPUの描画プロセスにおいて重要な役割を果たし、描画の効率に直接影響を与えます。