Если коротко:

Сначала измерьте Game, Draw и GPU time на целевой гарнитуре. Если кадр ограничен видеокартой, найдите самый дорогой проход в ProfileGPU или Unreal Insights, измените один параметр и повторите тот же тест. Средний FPS без разбивки по времени кадра причину просадки не показывает.

Unreal Engine VR GPU profiling показывает, на какие этапы рендеринга уходит время видеокарты и почему приложение не укладывается в бюджет кадра.

В VR просадка опаснее, чем в обычной игре: движок рисует стереопару, runtime синхронизирует кадр с положением головы, а гарнитура ожидает стабильный темп. Средний FPS скрывает короткие перегрузки, поэтому разработчику нужны миллисекунды CPU и GPU на конкретном устройстве.

Сначала определите сторону ограничения

Запустите сборку на целевой гарнитуре и сравните Game, Draw и GPU time. Если GPU time выше остальных и приближается к длительности кадра, сцена ограничена видеокартой. При частоте 90 Гц полный кадр длится около 11,1 мс, но приложение не получает всё это время: часть бюджета забирают runtime и служебные операции.

Не начинайте с ProfileGPU в случайной точке редактора. Сначала зафиксируйте сцену, положение камеры, разрешение, частоту гарнитуры и набор включённых функций. Для автономного устройства собирайте Development build и снимайте показатели непосредственно на нём.

Что показывает ProfileGPU

Команда ProfileGPU формирует снимок GPU Visualizer. В дереве видны проходы теней, base pass, прозрачность, освещение, постобработка и другие этапы. Большая строка указывает направление поиска, но не готовое решение.

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

Зачем нужны Unreal Insights и внешний профайлер

GPU Visualizer удобен для одного кадра. Unreal Insights помогает увидеть последовательность событий и связь с потоками CPU. На поддерживаемом оборудовании внешний инструмент, например Radeon GPU Profiler, даёт более низкоуровневое представление загрузки.

Снимайте трассу без лишнего отладочного шума. AMD рекомендует использовать тестовую сборку, повторяемый маршрут и фиксированную камеру. Такой подход отделяет изменение сцены от случайного поведения пользователя.

Рабочая последовательность

  1. Выберите воспроизводимый эпизод с реальной нагрузкой.
  2. Запишите частоту, разрешение и настройки runtime.
  3. Определите, ограничен ли кадр CPU или GPU.
  4. Снимите GPU-профиль и найдите самые дорогие проходы.
  5. Проверьте связанные материалы, свет, прозрачность и геометрию.
  6. Внесите одно изменение и повторите замер.
  7. Проверьте качество изображения в гарнитуре.

Если проект работает на автономной гарнитуре, дополните трассу показателями OVR Metrics Tool. Общий порядок оптимизации описан в материале про оптимизацию VR в Unreal Engine.

Ошибки измерения

Профиль из Editor не равен профилю установленной сборки. Редактор создаёт собственную нагрузку, а настольная видеокарта не воспроизводит ограничения мобильного чипа. Ещё одна ошибка состоит в сравнении двух проходов с разным положением головы или разным динамическим разрешением.

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

GPU-профилирование заканчивается повторным замером. Удалённый эффект, уменьшенное разрешение или упрощённый материал считаются оптимизацией только тогда, когда время кадра снизилось, а изображение осталось пригодным для целевого сценария.

Поделиться:TelegramВКонтакте

Источники

  1. AMD GPUOpen — Unreal Engine Performance Guide
  2. Meta — Testing and Performance Analysis for Unreal
  3. Unreal Art Optimization — Built-in GPU Visualizer