Dynamic Batching

Говоря об оптимизации при разработке на Unity 3D, мы уже упоминали Performance Profiler и Static batching. Пришло время сказать пару слов про Dynamic Batching.

Dynamic Batching можно использовать для нестатических объектов. Такие объекты требуют на каждую вершину определенные ресурсы, следовательно, Dynamic Batching применяется лишь к мешам, которые содержат меньше 900 вершин. Также стоит вспомнить, что шейдер использует Vertex Position, Colors и UV. В результате несложно посчитать, что может быть до трехсот вершин на объект.

Какие полезные советы по этому поводу мы можем найти в руководстве Unity:

  1. Dynamic Batching предполагает дополнительную нагрузку для каждой вершины, таким образом, как уже упоминалось, его рационально использовать лишь к мешам, которые в сумме содержат меньше 900 вершин.
  2. Если шейдер у вас применяет Vertex Position, Normal и единственный UV, то у вас есть возможность батчить до 300 вершин. Если же шейдер задействует Vertex Position, Normal, Tangent, а также UV0 и UV1, то число вершин сокращается до 180.
  3. Не стоит масштабировать! Дело в том, что объекты, имеющие масштаб (1,1,1) и (2,2,2), батчиться не будут.
  4. Продолжая тему предыдущего пункта, скажем, что батчиться не будут и равномерно масштабированные объекты с неравномерно масштабированными.
  5. Применение разных материалов с высокой вероятностью приведет к сбою батчинга.
  6. У объектов с Lightmap существует дополнительный параметр материала: смещение/масштаб в Lightmap. Следовательно, объекты с Lightmap тоже батчиться не будут.

Остается добавить, что если объект обладает анимацией, однако при всем при этом существует неподвижная часть, вы можете отметить эту часть в качестве статической, причем мешать анимации она не будет.

По материалам https://tproger.ru/.