Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Динамическая пакетная обработка – это метод пакетной обработки вызовов отрисовки, который группирует перемещение GameObjectsОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь
, чтобы уменьшить вызовы рисования. Динамическая пакетная обработкаАвтоматический процесс Unity, который пытается визуализировать несколько сеток, как если бы они были одной сеткой, для оптимизации производительности графики. Этот метод преобразует все вершины GameObject на ЦП и группирует множество похожих вершин вместе. Подробнее
См. Словарь
работает по-разному между сетками и геометриями, которые Unity генерирует динамически во время выполнения, например, системы частицКомпонент, моделирующий текучие объекты, такие как жидкости, облака и пламя путем создания и анимации большого количества небольших 2D-изображений в сцене. Подробнее
См. в Словарь
. Для получения информации о внутренних различиях между сетками и динамической геометрией см. разделы Динамическая пакетная обработка для сеток и Динамическая пакетная обработка для динамически генерируемых геометрий.

Примечание. Динамическая пакетная обработка сеток была разработана для оптимизации производительности на старых недорогих устройствах. На современном потребительском оборудовании работа, которую динамическая пакетная обработка выполняет на ЦП, может быть больше, чем накладные расходы на вызов отрисовки. Это негативно влияет на производительность. Дополнительную информацию см. в разделе Динамическая пакетная обработка сеток.

Требования и совместимость

В этом разделе содержится информация о совместимости конвейера рендеринга динамической пакетной обработки.

Совместимость конвейера рендеринга

Характерная черта Встроенный конвейер рендеринга Универсальный конвейер рендеринга (URP) Конвейер рендеринга высокого разрешения (HDRP) Пользовательский скриптовый конвейер рендеринга (SRP)
Dynamic Batching Да Да Нет Да

Использование динамической пакетной обработки

Unity всегда использует динамическую пакетную обработку для динамической геометрии, такой как системы частиц

Чтобы использовать динамическую пакетную обработку сеток:

  1. Выберите Редактировать > Настройки проекта > Проигрыватель.
  2. В разделе Другие настройки включите Динамическую пакетную обработку.

Unity автоматически объединяет движущиеся сетки в один и тот же вызов отрисовки, если они соответствуют критериям, описанным в общей информации об использовании.

Динамическая пакетная обработка сеток

Динамическая пакетная обработка сеток работает путем преобразования всех вершин в мировое пространство. на ЦП, а не на ГП. Это означает, что динамическая пакетная обработка является оптимизацией только в том случае, если работа по преобразованию требует меньше ресурсов, чем выполнение вызова отрисовки.

Требования к ресурсам для вызова отрисовки зависят от многих факторов, в первую очередь от графического API. Например, на консолях или современных API, таких как Apple Metal, накладные расходы на вызовы отрисовки, как правило, намного ниже, и часто динамическая пакетная обработка не дает прироста производительности. Чтобы определить, выгодно ли использовать динамическую пакетную обработку в вашем приложении, профилируйте ваше приложение с динамической пакетной обработкой и без нее.

Unity может использовать динамическую пакетную обработку для создателей теней, даже если их материалы различаются, при условии, что значения материалов, необходимые Unity для передачи теней, одинаковы. Например, в нескольких ящиках могут использоваться материалы с разной текстурой. Несмотря на то, что материальные активы различаются, разница не имеет значения для прохода отбрасывателя теней, и Unity может группировать тени для игровых объектов ящика на этапе рендеринга теней.

Ограничения

В следующих сценариях Unity либо вообще не может использовать динамическую пакетную обработку, либо может применять динамическую пакетную обработку только в ограниченной степени:

  • Unity не может применять динамическую пакетную обработку к сеткам, которые содержат более 900 атрибутов вершин и 300 вершин. Это связано с тем, что динамическая пакетная обработка сеток имеет дополнительные затраты на каждую вершину. Например, если ваш шейдерПрограмма, работающая на графическом процессоре. Подробнее
    См. в Словарь
    использует положение вершины, нормаль вершины и один UV, затем Unity может группировать до 300 вершин. Однако если ваш шейдер использует положение вершины, нормаль вершины, UV0, UV1 и касательную вершины, Unity может пакетировать только 180 вершин.
  • Unity не может применять динамическую пакетную обработку к GameObjects, которые содержат зеркальное отображение в своем компоненте TransformКомпонент Transform определяет положение, вращение , и Масштаб каждого объекта в сцене. Каждый GameObject имеет Transform. Подробнее
    См. в Словарь
    . Например, если один GameObject имеет масштаб 1, а другой GameObject имеет масштаб –1, Unity не может объединить их вместе.
  • Если в игровых объектах используются разные экземпляры материалов, Unity не может объединить их вместе, даже если они по сути одинаковы. Единственным исключением является отрисовкаотбрасывателя теней. Процесс отрисовки графики на экран (или текстуры отрисовки). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
    См. в Словарь
    .
  • Игровые объекты с картами освещения имеют дополнительные параметры визуализации. Это означает, что если вы хотите объединить GameObjects с картой освещения, они должны указывать на одну и ту же карту освещенияпредварительно обработанную текстуру, содержащую воздействие источников света на статичные объекты в сцене. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
    См. в разделе Словарь
    .
  • Unity не может полностью применить динамическую пакетную обработку к игровым объектам, использующим многопроходные шейдеры.
    • Почти все шейдеры Unity поддерживают несколько источников света при упреждающем рендерингепути рендеринга, при котором каждый объект визуализируется за один или несколько проходов, в зависимости на источники света, воздействующие на объект. Сами источники света также обрабатываются Forward Rendering по-разному, в зависимости от их настроек и интенсивности. Подробнее
      См. в Словарь
      . Для этого они обрабатывают дополнительный проход рендеринга для каждого источника света. Unity обрабатывает только первый проход рендеринга. Он не может объединять вызовы отрисовки для дополнительных попиксельных источников света.
    • Путь устаревшего отложенного рендеринга не поддерживает динамическую пакетную обработку, поскольку он отрисовывает игровые объекты за два прохода рендеринга. Первый проход является легким предварительным проходом, а второй проход визуализирует игровые объекты.

Динамическая пакетная обработка для динамически генерируемых геометрий

Следующие средства визуализации динамически генерируют геометрию, такую ​​как частицы и линии, которые можно оптимизировать с помощью динамической пакетной обработки:

Динамическая пакетная обработка для динамически сгенерированных геометрий работает иначе, чем для сеток:

  1. Для каждого средства визуализации Unity создает весь динамически пакетный контент в один большой буфер вершин.
  2. Визуализатор устанавливает состояние материала для пакета.
  3. Затем Unity привязывает буфер вершин к графическому процессору.
  4. Для каждого средства визуализации в пакете Unity обновляет смещение в буфере вершин и отправляет новый вызов отрисовки.

Этот подход аналогичен тому, как Unity отправляет вызовы отрисовки для статической пакетной обработкиТехника, которую Unity использует для отрисовки игровых объектов на экране, которая объединяет статические (неподвижные) игровые объекты в большие меши и рендерит их более быстрым способом. Подробнее
См. в Словарь
.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3