Если коротко:
Сначала измерьте 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 рекомендует использовать тестовую сборку, повторяемый маршрут и фиксированную камеру. Такой подход отделяет изменение сцены от случайного поведения пользователя.
Рабочая последовательность
- Выберите воспроизводимый эпизод с реальной нагрузкой.
- Запишите частоту, разрешение и настройки runtime.
- Определите, ограничен ли кадр CPU или GPU.
- Снимите GPU-профиль и найдите самые дорогие проходы.
- Проверьте связанные материалы, свет, прозрачность и геометрию.
- Внесите одно изменение и повторите замер.
- Проверьте качество изображения в гарнитуре.
Если проект работает на автономной гарнитуре, дополните трассу показателями OVR Metrics Tool. Общий порядок оптимизации описан в материале про оптимизацию VR в Unreal Engine.
Ошибки измерения
Профиль из Editor не равен профилю установленной сборки. Редактор создаёт собственную нагрузку, а настольная видеокарта не воспроизводит ограничения мобильного чипа. Ещё одна ошибка состоит в сравнении двух проходов с разным положением головы или разным динамическим разрешением.
Отключите системы, которые сами меняют качество, либо зафиксируйте их состояние в журнале. Иначе выигрыш от правки может оказаться следствием другого уровня разрешения или фовеации.
GPU-профилирование заканчивается повторным замером. Удалённый эффект, уменьшенное разрешение или упрощённый материал считаются оптимизацией только тогда, когда время кадра снизилось, а изображение осталось пригодным для целевого сценария.