SRP Batcher is a revolutionary rendering system for reducing CPU load caused by Draw Call in Scriptable Render Pipeline (URP and HDRP) environments. Unlike legacy GPU instancing and dynamic batching, even if the materials and textures are different, if the shader code (variant) is the same, it is possible to skip issuing state change commands to the GPU side.
Real-world analogy: Kitchen process at a hamburger restaurant
The mechanism of SRP Batcher can be compared to the efficiency process of sending food from the kitchen (CPU) to the counter (GPU) at a hamburger restaurant.
- Conventional (without SRP Batcher): Every time one hamburger is finished, all cooking utensils (shader and material settings) are put away, cleaned thoroughly, and set up again from the beginning before making the next hamburger. The kitchen workers (CPU) are exhausted because they have to clean up the cooking utensils one by one, and the speed at which food is served slows down significantly (large CPU overhead).
- With SRP Batcher: Cooking equipment and basic cooking processes (shader code) remain fixed. Then, quickly switch and arrange only the toppings (material parameters unique to each object) on the flowing hamburger steak. Since there is almost no wasted time cleaning up cooking utensils, you can continuously serve hamburgers at overwhelming speed.
Illustration: SRP Infographic of drawing state optimization using Batcher's fixed shader + CBUFFER batch update
Mechanism and operating principle
In conventional batch processing, the golden rule for reducing draw calls was to "combine textures and materials into one (atlas)". However, with SRP Batcher, even if the textures and materials are different, if the same shader is used, the binding state on the GPU side will not be changed, and only the material properties (colors and parameters) of each object will be transferred to the GPU's constant buffer (CBUFFER / Constant Buffer), allowing you to switch the drawing state at super high speed.