Unity3d Static Batching fix
UPD: в Unity3d 2023.1.0a5 эта проблема исправлена, подтверждение от Unity по ссылке ниже
Содержание статьи:
Пока сёрфил интернет в поисках внятной информации об оптимизации Unity3d наткнулся на тему на форуме
А уже в ней на GitHub репозиторий
Суть проблемы:
- сцена с множеством MeshRenderer'ов, различными Material'ами и большая по площади
- включаем Static Batching
- полученные batch’и имеют хаотичную форму и масштабы, что приводит к бесполезной нагрузке при её отрисовке. Это происходит потому, что алгоритм, который выбирает что с чем сшить, не упорядочивает объекты по положению в пространстве. На форуме разработчики из Unity Technologies признают проблему
- Эта проблема может быть особенно болезненна для Top-down и side-scrolling игр, где вы в камере видите очень маленькую часть от большой сцены. Неудачный Static Batching сильно повысит количество геометрии в кадре (в том числе и тени), а следовательно и нагрузку на GPU
- я писал для работы решение, основанное на том, что в редакторе мы сортируем MeshRenderer’ы по координатам, складываем в списке, а в Runtime сшиваем их вручную с помощью StaticBatchingUtility.Combine(GameObject)
- Решение представленное на GitHub я не тестировал, но оно мне видится более удобным и лаконичным, там прямо в .dll'ках движка подменяется алгоритм сортировки объектов сцены для Static Batching'а, чтобы он учитывал упорядочивание их в пространстве
Считаю, что проблема неоправданно привлекла мало внимания со стороны Unity Technologies, и о таких оптимизациях вам не расскажут в очередном 5-50 минутном по оптимизации с помощью Profiler / Static Batching и т.п.
На следующих скриншотах случайными цветами выделены отдельные batch'и при Static Batching'е
- мы в проекте отказались от Static Batching, из-за требуемого огромного объема ОЗУ и при использовании GPU-Instancing и Dynamic Batching мы видели FPS выше. Но если для вас ОЗУ не проблема, и при тестах Static Batching показывает лучше FPS, рекомендую:
- воспользоваться патчем с GitHub
- написать собственное решение аналогичное моему
Всем успехов в ваших проектах