Unity 6.3
0 онлайн 3 гостей 3 в системе
Вход

Введение в пакетные меши

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

Пакетная обработка имеет следующие ограничения:

  • Поддержка только пакетирования Рендереры сетки. Пакетная обработка не поддерживает Skinned Mesh Renderers.
  • Пакетирование прозрачного GameObjects может быть ограничено, потому что Unity сортирует все меши назад-вперед перед пакетированием.
  • Unity не может использовать динамическую партию для партии GameObjects, которые используют отрицательный масштаб в их Transform компонентах с GameObjects, которые используют положительный масштаб.

Вы также можете вручную объединить сетки, но в результате вы не сможете удалить меши по отдельности.

Пакетирование статических GameObject

Статическое пакетирование объединяет несколько статических мешей в один вершинный и один индексный буфер, используя координаты в мировом пространстве. В каждом буфере может быть до 64 000 вершин, но Unity может создать несколько пакетов.

Статическое пакетирование можно использовать двумя способами:

Перемещение партии GameObjects

Предупреждение: В большинстве случаев динамическое пакетирование больше не рекомендуется, так как накладные расходы CPU могут оказаться выше, чем накладные расходы на вызов отрисовки. Подробнее см. Выбор метода оптимизации вызовов отрисовки.

Динамическая пакетная обработка рекомендуется только на устройствах более низкого уровня. Во время выполнения она выполняет следующие действия:

  • Преобразует вершины сетки в мировое пространство на CPU, а не на GPU, и группирует их в один вызов рисования.
  • Для геометрии, формируемой во время выполнения, — частиц, линий, шлейфов — Unity помещает все меши в один вершинный буфер, а затем отправляет по одному вызову отрисовки на каждый меш. Это похоже на статическое пакетирование.

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

Динамическая пакетная обработка имеет следующие ограничения:

  • Не поддерживается в High Definition Render Pipeline (HDRP).
  • Меши не должны превышать 900 вершинных атрибутов или 300 вершин. В результате, если вы используете больше вершинных атрибутов, то меньше мешей может быть объединено в пакет.
  • Если GameObjects использует освещение от текстур lightmap, они все должны использовать одну и ту же текстуру lightmap и UVs.
  • Поддерживает только первый проход рендеринга в многопроходном шейдере. В результате Unity не может пакетно вызывать рисование для дополнительных пиксельных светов в Unity шейдерах.

Дополнительные сведения см. в Пакетные меши во время выполнения.

Дополнительные ресурсы

  • Выбор метода оптимизации вызова