Разработка

Инструмент Lost Frame Capture

LINK PC-VR DOCUMENTATION
Эта тема посвящена разработке с использованием PC SDK. Об оптимизации производительности для приложений Meta Quest на разных платформах см. в следующих статьях:
Инструмент Lost Frame Capture собирает информацию о пропущенных кадрах во время работы вашего VR-приложения. Затем вы можете воспроизвести пропущенные кадры и просмотреть статистические данные для отслеживания проблем с производительностью в своем приложении.

Обзор

После отправки вашего VR-приложения в магазин Rift Store инженеры Meta проверяют, насколько оно соответствует контрольному списку виртуальной реальности Rift (VRC), содержащему ряд требований, которым должно отвечать ваше приложение, в том числе к целевым показателям производительности. Информацию о проверке см. в следующем каталоге: /distribute/publish-rift-app-submission/. Если из-за проблем с производительностью в работе вашего приложения происходит сбой, это обычно связано с тем, что в какой-то момент во время выполнения ему не удается поддерживать требуемую частоту кадров 90 кадров в секунду. (За пределами переходов между сценами не должно быть больших кластеров пропущенных кадров. Приложениям разрешено пропускать кадры при загрузке кода в память или при переходе от одной сцены к другой.)
Если ваше приложение отклонено из-за неудовлетворительной производительности, вы должны устранить эти проблемы и повторно отправить приложение на проверку. Однако в прошлом разработчикам было сложно точно определить проблемные области в своих приложениях. В ближайшее время Oculus начнет предоставлять разработчикам архив отладки Oculus Debug Archive (файл ODA) всякий раз, когда их приложение будет отклонено из-за проблем с производительностью. Вы можете загрузить файл ODA с помощью инструмента Lost Frame Capture и проанализировать производительность своего приложения. Этот инструмент позволяет точно понять, где именно возникли проблемы с производительностью, и даже просмотреть потерянные кадры, которые вызывают такие проблемы.
Инструмент Lost Frame Capture также можно использовать для анализа приложений перед их отправкой в ​​Meta. Это поможет вам обнаружить и устранить любые проблемы с производительностью до отправки приложения.
В остальной части этого документа описывается, как использовать инструмент Lost Frame Capture.

Запуск инструмента Lost Frame Capture

  1. Запустите инструмент отладки Oculus Debug Tool, который доступен здесь: C:\Program Files\Oculus\Support\oculus-diagnostics\OculusDebugTool.exe
  2. Откроется Oculus Debug Tool. Нажмите кнопку Lost Frame Capture:
    Oculus Debug Tool with the Lost Frame Capture button highlighted.
  3. Откроется инструмент Lost Frame Capture:
    Lost Frame Capture tool main window with Record, Save, Load, and Summary buttons.
  4. При необходимости доступны следующие действия:* Нажмите Record (Запись), чтобы начать захват потерянных кадров из текущего сеанса. * Нажмите Save (Сохранить), чтобы сохранить текущий захваченный контент в файл архива Oculus Debug Archive (ODA). * Нажмите Load (Загрузить), чтобы загрузить существующий файл Oculus Debug Archive (ODA). * Нажмите Summary (Сводка), чтобы просмотреть статистическую сводку на основе текущего загруженного файла ODA или текущего сеанса захвата (в зависимости от того, что активно в настоящее время).

Анализ результатов инструмента Lost Frame Capture

  • Файл ODA, который вы сами создали ранее.
  • Файл ODA, который вы получили, если отправленное вами приложение не прошло проверку VRC.
Вы также можете проанализировать результаты инструмента Lost Frame Capture, полученные во время текущего сеанса, без необходимости сохранения этих данных в файле ODA.
Перед отправкой приложения на проверку рекомендуем его запустить и получить результаты инструмента Lost Frame Capture. При запуске приложения вам следует рассмотреть все сценарии, с которыми могут столкнуться конечные пользователи. Затем проанализируйте полученные результаты, чтобы определить, имелись ли большие кластеры пропущенных кадров за пределами переходов между сценами. Если вы обнаружите какие-либо проблемы с производительностью, устраните их перед отправкой приложения.
Чтобы загрузить и проанализировать файл ODA, выполните следующие действия:
  1. Запустите инструмент Lost Frame Capture (как описано выше).
  2. Нажмите кнопку Load (Загрузить):
    Lost Frame Capture tool with the Load button highlighted.
  3. Выберите файл .oda, который необходимо загрузить.
  4. Инструмент Lost Frame Capture открывает свое окно с данными в основном окне:
    Lost Frame Capture tool showing lost frame list, eye view renders, and frame rate graph.
В этом окне данных перечислены кадры, которые были потеряны во время захвата контента ODA. В первом столбце указаны индексы кадров. Вы заметите, что потерянные кадры иногда группируются в структуры, напоминающие папки. Это поможет вам распознать потерю нескольких кадров, расположенных близко друг к другу. Всякий раз, когда последовательность кадров теряется, а между любыми двумя потерянными кадрами нет временного промежутка более одной секунды, эти потерянные кадры объединяются в структуру папок, которая называется кластером потерянных кадров.
Вы можете выбрать кадр на верхнем уровне списка или кадр из кластера потерянных кадров. Справа отображаются отрисованные представления кадра для левого и правого глаза. Ниже представлен график, на котором указана частота кадров для набора потерянных кадров, где 90 кадров в секунду — самое верхнее значение на графике. Если график опускается вниз, это означает, что кадры генерируются с более низкой частотой (что, если это будет продолжаться, неприемлемо, поскольку приводит к снижению удобства использования).
В приведенном выше примере текущий выбранный кадр был сгенерирован со скоростью 56,3 кадра в секунду, на что указывает горизонтальная линия. Вы можете перемещаться по потерянным кадрам с помощью клавиш со стрелками и наблюдать, как линия движется с течением времени. Точка, в которой горизонтальная линия пересекает вертикальную пунктирную линию на сетке, а также пересекает график, указывает, где на временной шкале находится текущий выбранный кадр.
Это графическое представление помогает визуализировать, каким образом частота кадров для текущего выбранного кадра сравнивается с другими близлежащими кадрами (если вы перемещаетесь по кадрам внутри кластера). Например, вы можете сравнить текущий уровень горизонтальной линии с общим графиком. Это может значительно облегчить определение того, где проблема возникает и где она становится максимально острой. Во многих случаях вы сможете интуитивно понять, в чем заключается проблема, если просто посмотрите на содержимое кадров. Например, при уменьшении частоты кадров может отображаться какой-то объект. Возможно, шейдер, используемый этим объектом, слишком сложен, либо какой-то другой аспект процесса рендеринга этого объекта использует слишком много ресурсов центрального или графического процессора.

Отображаемые столбцы данных

Столбцы, отображаемые инструментом Lost Frame Capture, перечислены в следующей таблице. Вы можете выбрать заголовок любого столбца, чтобы отсортировать строки по этому столбцу. Если сортировка выполняется по столбцу, отличному от индекса потерянных кадров, кластеры сортируются в виде группы в верхней части списка, а отдельные кадры, не объединенные в кластеры, сортируются в виде группы в нижней части списка.
Эти столбцы включают в себя следующие:
Lost Frame Index (Индекс потерянных кадров)Индекс кадра для потерянного кадра в этой строке.
Queue Ahead (ms) (Опережение очереди (мс))
Время опережения очереди в миллисекундах для кадра. (Информация о времени опережения в очереди доступна в каталоге /documentation/native/pc/dg-render/#dg-queue-ahead.)
App Time (ms) (Время приложения (мс))
Количество времени, которое приложение потратило на обработку кадра (в миллисекундах).
Compositor Time (ms) (Время компоновщика (мс))
Количество времени, которое компоновщик потратил на обработку кадра (в миллисекундах).
Frame Count (Количество кадров)
Количество циклов кадра, представленных строкой. Для одного кадра это значение указывает количество циклов кадра, которое потребовалось этому кадру. Часто это значение равно 2, поскольку кадр был утерян и не мог быть отрисован в течение одного цикла кадра. Для кластеров потерянных кадров это значение может быть намного больше, поскольку оно представляет собой количество циклов кадров, требуемых для всех кадров в кластере. Столбец Frame Count (Количество кадров) может оказаться очень полезным, поскольку, просто просматривая его, можно увидеть, где именно большое количество кадров было пропущено и находилось в непосредственной близости друг от друга. Если это происходит, скорее всего, в этом месте возникла проблема с производительностью.
Frame Rate (hz) (Частота кадров (Гц))
Частота кадров для текущей выбранной строки. Для одного кадра это частота кадров, которая имела бы место, если бы кадры обрабатывались непрерывно с частотой текущего выбранного кадра, выраженная в кадрах в секунду (Гц). Для кластера кадров — это частота кадров, которая получилась бы, если бы средняя частота кадров для кадров в кластере обрабатывалась непрерывно, выраженная в кадрах в секунду (Гц). Обратите внимание, что это средняя частота кадров для потерянных кадров в течение периода времени, представленного кластером. Вполне возможно (и, собственно, так обычно и происходит), что в течение этого периода времени было обработано множество других кадров, однако они не были потерянными и не отображаются в инструменте Lost Frame Capture.
V-Sync (Вертикальная синхронизация)
Вертикальная синхронизация для строки. При выборе одного кадра это место на временной шкале, в котором была выполнена вертикальная синхронизация для этого кадра (в секундах от начала периода захвата). При выборе кластера кадров — это вертикальная синхронизация для первого кадра в кластере.
Duration (ms) (Длительность (мс))
Продолжительность времени (в миллисекундах), в течение которого кадры постоянно терялись для текущей выбранной строки. При выборе одного кадра это время, затраченное на обработку этого кадра. При выборе кластера кадров: * Период начинается, когда система начинает обработку первого отброшенного кадра в кластере. * Период заканчивается, когда система заканчивает обработку последнего отброшенного кадра в кластере. * Значение Duration (Длительность) включает в себя время обработки всех кадров, которые были обработаны между начальным временем и конечным временем, в том числе отброшенные и неотброшенные кадры.

Запись файла ODA

Как захватить все потерянные кадры, созданные вашим приложением, а затем сохранить этот контент в виде файла ODA:
  1. Нажмите Record (Запись).
  2. Выполните необходимые вам действия в VR-приложении.
  3. Снимите гарнитуру и остановите запись. (В окне инструмента Lost Frame Capture будет доступна кнопка Stop (Стоп)).
  4. Нажмите Save (Сохранить), чтобы сохранить записанные данные в файл ODA.

Просмотр сводки по производительности

Чтобы просмотреть набор общих статистических данных для текущего открытого файла ODA или текущего сеанса записи, нажмите кнопку Summary (Сводка). Отобразится всплывающее окно Performance Summary (Сводка по производительности):
Performance Summary popup showing overall statistics for the capture session.
Логотип навигации
Русский
© 2026 Meta