Статическая пакетная обработка — это метод пакетной обработки вызовов отрисовки, который объединяет неподвижные сетки для уменьшения вызовы отрисовки. Он преобразует объединенные сетки в мировое пространство и строит для них один общий вершинный и индексный буфер. Затем для видимых мешей Unity выполняет ряд простых вызовов отрисовки, практически без изменения состояния между каждым из них. Статическая пакетная обработкаТехника, которую Unity использует для отрисовки игровых объектов на экране, которая объединяет статические (неподвижные) игровые объекты в большие меши и визуализирует их. их более быстрым способом. Подробнее
См. в Словарь не уменьшает количество вызовов отрисовки, а наоборот количество изменений состояния рендеринга между ними.
Статическая пакетная обработка более эффективна, чем динамическая пакетная обработкаавтоматический процесс Unity который пытается визуализировать несколько сеток, как если бы они были одной сеткой для оптимизации производительности графики. Этот метод преобразует все вершины GameObject на ЦП и группирует множество похожих вершин вместе. Подробнее
См. в Словарь, так как статическая пакетная обработка не преобразует вершины на ЦП. Дополнительные сведения о влиянии статической пакетной обработки на производительность см. в разделе Влияние на производительность.
Требования и совместимость
В этом разделе содержится информация о совместимости конвейера рендеринга статической пакетной обработки.
Совместимость конвейера рендеринга
Характерная черта | Встроенный конвейер рендеринга | Универсальный конвейер рендеринга (URP) | Конвейер рендеринга высокого разрешения (HDRP) | Пользовательский скриптовый конвейер рендеринга (SRP) |
---|---|---|---|---|
Static Batching | Да | Да | Да | Да |
Использование статической пакетной обработки
Unity может выполнять статическую пакетную обработку во время сборки и во время выполнения. Как правило, если GameObjectsосновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки , и больше. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь существует в sceneСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь, прежде чем создавать приложение, используйте Редактор для пакетирования ваших игровых объектов во время сборки. Если вы создаете игровые объекты и их сетки во время выполнения, используйте API времени выполнения.
При использовании API среды выполнения можно изменить свойства преобразования корня статического пакета. Это означает, что вы можете перемещать, вращать или масштабировать всю комбинацию сеток, составляющих статическую партию. Вы не можете изменить свойства преобразования отдельных мешей.
Чтобы использовать статическую пакетную обработку для набора игровых объектов, эти игровые объекты должны иметь право на статическую пакетную обработку. В дополнение к критериям, описанным в общей информации об использовании, убедитесь, что:
- Игровой объект активен.
- Игровой объект имеет фильтр сеткикомпонент сетки, который принимает mesh из ваших активов и передает ее в Mesh Renderer для рендеринга на экране. Подробнее
Просмотрите в компоненте Словарь, и этот компонент включен. - Компонент Mesh Filter имеет ссылку на Meshосновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь. - Сетка доступна для чтения/записи.
- Количество вершин сетки больше 0.
- Эта сетка еще не была объединена с другой сеткой.
- Игровой объект имеет Mesh Rendererкомпонент сетки, который принимает геометрию из Mesh Filter и визуализирует ее в положении, определенном компонентом Transform объекта. Подробнее
Посмотрите в компоненте Словарь, и этот компонент включен. - Компонент Mesh Renderer не использует материалы с шейдеромпрограммой, работающей на графическом процессоре. Подробнее
Посмотрите в Словарь, где естьDisableBatching
установлено значение true.
Информацию о влиянии статической пакетной обработки на производительность см. в разделе Влияние на производительность.
Статическая пакетная обработка во время сборки
Вы можете включить статическую пакетную обработку во время сборки в редакторе.
Чтобы выполнить статическую пакетную обработку во время сборки:
- Выберите Редактировать > Настройки проекта > Проигрыватель.
- В разделе Другие настройки включите Статическая пакетная обработка.
- В представлении «Сцена» или «Иерархия» выберите игровой объект, который вы хотите пакетировать, и просмотрите его в Инспекторе.
Совет. Вы можете одновременно выбрать несколько игровых объектов, чтобы включить статическую пакетную обработку для всех из них. - В разделе Флаги редактора статических объектов GameObject включите Пакетная обработка статических данных.
Unity автоматически объединяет указанные статические сетки в один и тот же вызов отрисовки, если они соответствуют критериям, описанным в общей информации об использовании.
Примечание. Если вы выполняете статическую пакетную обработку во время сборки, Unity не использует ресурсы ЦП во время выполнения для создания данных сетки для статической пакетной обработки.
Статическая пакетная обработка во время выполнения
Для пакетной обработки статических сеток во время выполнения Unity предоставляет класс StaticBatchingUtility. Статический метод StaticBatchingUtility.Combine объединяет передаваемые вами игровые объекты и подготавливает их к статической пакетной обработке. Это особенно полезно для мешей, которые вы генерируете процедурно во время выполнения.
В отличие от статической пакетной обработки во время сборки, для пакетной обработки во время выполнения не требуется включать параметр проигрывателя Статическая пакетная обработка. Информацию об использовании этого API см. в разделе StaticBatchingUtility.
Влияние на производительность
Использование статической пакетной обработки требует дополнительной памяти ЦП для хранения комбинированной геометрии. Если несколько игровых объектов используют одну и ту же сетку, Unity создает копию сетки для каждого игрового объекта и вставляет каждую копию в объединенную сетку. Это означает, что одна и та же геометрия появляется в комбинированной сетке несколько раз. Unity делает это независимо от того, используете ли вы редактор или API среды выполнения для подготовки GameObjects к статике. дозирование. Если вы хотите сохранить меньший объем памяти, вам, возможно, придется пожертвовать рендерингомпроцессом вывода графики на экран (или текстуру рендера). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
Посмотрите на производительность Словарь и избегайте статической пакетной обработки некоторых игровых объектов. Например, пометка деревьев как статических в густом лесу может серьезно повлиять на память.
Примечание. Существуют ограничения на количество вершин, которые может включать статический пакет. Каждый статический пакет может включать до 64000 вершин. Если их больше, Unity создает еще один пакет.