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

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

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

Проверка количества вызовов

Чтобы проверить, не отправляет ли ваша сцена слишком много вызовов рисования, выполните любое из следующих действий:

  • Откройте окно Статистика отображения и проверьте значение SetPass вызова.
  • Откройте Profiler и выберите раздел Рендеринг для отображения количества вызовов игры.
  • Проверьте количество вызовов рисования в Frame Debugger.

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

Поддерживаемые и рекомендуемые методы оптимизации вызовов отрисовки зависят от того, используете ли вы Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP) или встроенный конвейер рендеринга (BIRP).

Особенности Тип Многопоточность Рекомендация в URP Рекомендация в HDRP Рекомендация во встроенном Render Pipeline
Scriptable Render Pipeline (SRP) Дозатор Сокращает число обновлений состояния рендеринга DX12, Vulkan и совместимая консоль APIs, только если вы включили Графика. Включить. См. SRP Batcher в URP. Включить. См. SRP Дозатор в HDRP Не поддерживается
GPU Резидентный ящик Использует GPU аппаратное копирование Да См. GPU Резидентный ящик в URP. Включить. См. GPU Резидентный ящик в HDRP Не поддерживается
BatchRendererGroup (BRG) API Использует GPU аппаратное копирование Да Используйте вместо этого GPU Resident Drawer, за исключением расширенных сценариев использования. Используйте вместо этого GPU Resident Drawer, за исключением расширенных сценариев использования. Не поддерживается
GPU Флажок в материалах GPU аппаратное инстанционирование Нет Отключить, чтобы избежать дополнительных вариантов шейдеров. Отключить, чтобы избежать дополнительных вариантов шейдеров. Включите, если у вас много экземпляров или огней. См. GPU Создание экземпляра.
Дозирование Объединение мешей Нет Отключить. Статическое пакетирование несовместимо с BRG API или GPU Resident Drawer. Отключить. Статическое пакетирование несовместимо с BRG API или GPU Resident Drawer. Включите статическое пакетирование. Динамическое пакетирование больше не рекомендуется. См. Дозирование.

Если у вас много экземпляров или светильников, вы также можете использовать для оптимизации отображения сетки с использованием уровня детализации (LOD).

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

  • Используйте одни и те же материалы для различных GameObjects, насколько это возможно.
  • Если вы хотите отобразить одну и ту же сетку с разными свойствами, например, разными цветами, используйте Варианты материалов вместо нескольких материалов.
  • Не используйте MaterialPropertyBlock API в URP и HDRP.

Используйте несколько методов оптимизации

Вы можете использовать несколько методов оптимизации вызова рисования в одной и той же сцене, но каждый GameObject использует только некоторые методы в зависимости от его сетки и шейдера.

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

  • Статические меши: объединяет меши с помощью статического пакетирования.
  • Динамические меши с совместимым шейдером: использует SRP Batcher с GPU Resident Drawer или BRG API.
  • Оставшиеся меши с совместимым шейдером: использует GPU Инстансирование.
  • Оставшиеся меши: использует динамическое пакетирование.

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

  • Варианты шейдера
  • Королевство Фантазии в Unity 6, которое использует GPU Резидентский Ящик.
  • SRP Batcher: ускорение рендеринга
  • BatchRendererGroup пример: Достижение высокой частоты кадров даже на бюджетных устройствах
  • Megacity Metro, который использует BatchRendererGroup API для отображения большого количества объектов.