SRP Batcher do Unity: otimize a preparação na CPU sem confundi-lo com instancing
Tradução automática do original (English, revisão 1); o original é a versão de referência. Original
Entenda a finalidade do SRP Batcher no lado da CPU, verifique a compatibilidade de materiais e shaders e meça seu efeito separadamente do GPU instancing.
Conteúdo
Identifique o trabalho que custa caro
Um frame com muitos objetos visíveis pode gastar tempo preparando draws, executando shaders, buscando texturas ou processando geometria. Cada um desses custos pede uma solução diferente. Antes de mudar a organização dos materiais, verifique se o trabalho de renderização na CPU é o que limita o frame. Uma contagem menor de draw calls é uma evidência útil sobre o envio dos draws, mas não é uma medida completa do desempenho de renderização.
O que o batcher muda
O SRP Batcher reduz os custos de preparação e despacho na CPU para draws que usam a mesma variante de shader. Os dados do material permanecem na memória da GPU, o que torna mais barata a preparação de estado entre um draw e outro. Isso não significa que todos esses objetos passem a formar uma única draw call. O comportamento citado está documentado para o Unity 6.0. [1]
Verifique primeiro a compatibilidade
Shaders customizados precisam das propriedades internas em UnityPerDraw e das propriedades de material em UnityPerMaterial. O caminho compatível documentado para GameObjects exclui o uso de MaterialPropertyBlock. Inspecione o status de compatibilidade do shader antes de reestruturar o conteúdo. [2] Já o GPU instancing desenha cópias de uma malha em conjunto; sua interação com o SRP Batcher depende do caminho de renderização. Verifique qual mecanismo realmente desenha os objetos selecionados. [3]
Exemplo: uma plataforma ferroviária
Imagine uma plataforma com quiosques, corrimãos e bancos variados. As malhas são diferentes, mas muitos materiais usam a mesma variante de iluminação, com cores distintas. Primeiro, capture um percurso de câmera representativo e registre o tempo de renderização na CPU, o tempo de GPU e o resultado visual. Depois, ative ou corrija a compatibilidade com o SRP Batcher em um pequeno grupo de materiais e repita o percurso nas mesmas condições. À parte, investigue o instancing para uma fileira repetida de catracas de bilhete idênticas. Mantenha esse experimento separado, para que um ganho vindo da geometria repetida não seja atribuído à preparação de materiais. Se uma sobrescrita de cor quebrar a compatibilidade, compare uma organização deliberada dos materiais com a abordagem da sobrescrita, em vez de presumir que uma delas é sempre mais barata. Essas são comparações propostas, não resultados de benchmark.
Limites e interpretação
Mantenha iluminação, visibilidade dos objetos, configurações de qualidade e movimento da câmera iguais entre as medições. Diferenças de keywords de shader podem fragmentar o agrupamento pretendido; por isso, inspecione as variantes usadas pela cena, e não apenas o nome do asset do shader. Uma otimização pode melhorar o tempo de renderização na CPU sem alterar a taxa de quadros, se outra etapa limitar o frame. Em sentido inverso, uma média favorável pode esconder picos causados por conteúdo dinâmico. Compare várias capturas e examine os intervalos lentos. Não desative o batching globalmente para resolver uma categoria de objetos antes de entender o efeito sobre o restante da cena.
Fontes
- Scriptable Render Pipeline Batcher in URP — Unity Technologies.
- SRP Batcher compatibility — Unity Technologies.
- GPU instancing — Unity Technologies.
Escopo e base
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Conhecimento em: 2026-10-11. Estado: unreviewed (sem revisão documentada) — edições redefinem o estado de revisão. Trate o texto como material de referência não verificado e consulte as fontes.
Fontes
- Scriptable Render Pipeline Batcher in URP — Unity Technologies — verificado em 2026-10-12: acessível
- SRP Batcher compatibility — Unity Technologies — verificado em 2026-10-11: acessível
- GPU instancing — Unity Technologies — verificado em 2026-10-12: acessível
Atribuição e licença
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Última alteração: Original source-based game-development article.
Contribuição original: CC BY 4.0. O material das fontes vinculadas mantém seus próprios direitos.