SRP Batcher
スクリプタブルレンダーパイプライン (SRP) 使用時に、複数のレンダリングコマンドを効率的にバッチ処理し、CPU の負荷を軽減する仕組みである。マテリアルとシェーダーのプロパティを一度に処理し、CPU と GPU 間の通信を減らすことができる。使用環境にも依るが、レンダリング速度はおよそ1.2倍から4倍高速化される。
リンク:
SRP Batcher – レンダリングをスピードアップ | Unity Blog [公式]
ドキュメント:
スクリプタブルレンダーパイプラインバッチャー | Unity マニュアル [公式]
使い方
参考:
SRP Batcher の対応方法/利用上の注意点などまとめ | アマガミナブログ
SRP Batcher 良き良き | enrike3 のブログ
SRP Batcher に対応した Unity Shader Variables | Nyahoon Games Pte. Ltd.
I need help to make my shader SRP Compatible – Unity Forum
SPR batcher on hand-written shader in URP – Unity Forum
How to make a Default Unlit Shader compatible? – Unity Forum
Material property is found in another cbuffer 警告
現象:
プロパティが適切な定数バッファに存在しない旨の警告が表示される。
Material property is found in another cbuffer than "UnityPerMaterial" (_PropertyName)
対処法:
CBUFFER_START
及び CBUFFER_END
を用いて、プロパティを適切な定数バッファグループ内に宣言する。
CBUFFER_START(UnityPerMaterial)
float4 _ColorProperty;
float _ScalarProperty;
CBUFFER_END
Code language: Arduino (arduino)
ドキュメント:
シェーダー定数 | Microsoft Learn [公式]
定数変数のパッキング規則 | Microsoft Learn [公式]
参考:
意外と難しかった SRP Batcher 対応 | Nyahoon Games Pte. Ltd.
SRP Batcher が有効な URP 向けのシェーダを書く | e.blog
互換性
参考:
What makes a shader SRP batcher incompatible? – Unity Forum
Node is not compatible with SRP batcher? – Unity Forum
not compatible, Not initialized on URP – Unity Forum
まとめ
SRP Batcher まとめ – Dynamic Baching や GPU インスタンシングとの違い/シェーダの書き方まで | LIGHT11