Unity 6.3
0 онлайн 91 гостей 3 в системе
Вход
Оптимизация Шаг 140 из 208

Введение в BatchRendererGroup API в URP

BRG является идеальным инструментом для:

  • Отображение DOTS Объектов. Для получения дополнительной информации о том, как Entities использует BRG, см. Объекты Графическая производительность.
  • Отображение большого количества объектов окружающей среды, где использование отдельных GameObjects было бы слишком ресурсоемким. Например, процедурно размещенные растения или камни.
  • Вы можете использовать различные меши или материалы для отображения различных уровней детализации.

Совместимость конвейера отображения

В следующей таблице показано, какие конвейеры рендеринга поддерживают BRG.

Название особенности Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Изготовленный на заказ SRP Built-in Render Pipeline
BatchRendererGroup Да (1) Да (1) Да (1) Нет

Примечания::

  1. Если проект использует SRP Batcher.

Совместимость платформ

Unity поддерживает BRG на:

  • Windows с использованием DirectX 11
  • Windows с использованием DirectX 12
  • Windows с использованием Vulkan
  • Универсальная платформа Windows
  • Linux с использованием Vulkan
  • macOS с использованием Metal
  • iOS
  • Android (Vulkan и OpenGL ES 3.x)
  • PlayStation 4
  • PlayStation 5
  • Xbox One
  • Xbox Series X and Xbox Series S
  • Nintendo Switch

Как работает BatchRendererGroup

Для рендеринга на экран, BatchRendererGroup (BRG) генерирует команды draw, которые являются специфической для BRG концепцией, которая содержит все, что нужно Unity для эффективного создания оптимизированных, экземплярных вызовов draw.

Чтобы определить, когда отрисовывать экземпляры в команде отрисовки, BRG использует настройки фильтра. Настройки фильтра контролируют, когда рендировать сами экземпляры, но также и когда рендировать определенные аспекты каждого экземпляра, такие как его тени и векторы движения

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

Ограничений на то, для каких экземпляров выполняются вызовы отрисовки, нет. Один и тот же экземпляр — объект с одним и тем же индексом экземпляра и batchID — можно отрисовать много раз с разными мешами и материалами. Это бывает полезно, например, когда нужно отрисовать разные подмеши разными материалами, используя одни и те же индексы экземпляров, чтобы разделять между отрисовками такие свойства, как матрицы преобразования.

Информацию о создании рендерера с помощью BRG см. в разделе Создание рендерера с помощью BatchRendererGroup.

Технические ограничения

В большинстве случаев Unity отображает команду отрисовки как один вызов отрисовки на уровне платформы с экземпляром для каждого совместимого вызова DrawRenderers в Scriptable Render Pipeline. Однако это невозможно, если у графического API предел размера для вызовов отрисовки меньше, чем visibleCountкоманды отрисовки. В таких ситуациях Unity разбивает команду отрисовки на несколько инстансированных вызовов отрисовки.

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