Skip to content

Latest commit

 

History

History
155 lines (112 loc) · 20 KB

understanding-performance-for-mixed-reality.md

File metadata and controls

155 lines (112 loc) · 20 KB
title description author ms.author ms.date ms.topic keywords ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid
Основные сведения о производительности смешанной реальности
дополнительные сведения и сведения для анализа и оптимизации производительности Windows Mixed Reality приложений.
hferrone
v-vtieto
08/16/2021
article
Windows Mixed Reality, смешанная реальность, виртуальная реальность, VR, MR, производительность, оптимизация, цп, GPU
9304e4cd80f0929b87a29873ad07329700ec463f
bea83261bf9ce7a27a618e5bc54dc4d7711f5435
MT
ru-RU
10/19/2021
130157708

Основные сведения о производительности смешанной реальности

В этой статье приводятся общие сведения о значимости производительности для приложения смешанной реальности. Работа пользователей может быть значительно снижена, если приложение не работает с оптимальной частотой кадров. Голограммы будет отображаться нестабильно, а головное отслеживание окружения будет неточным, что приведет к неудачной работе пользователя. Производительность должна рассматриваться как первая функция класса для разработки смешанной реальности, а не для польской задачи.

недавно мы выпустили приложение с названием "основы качества", которое охватывает общие проблемы с производительностью, проектированием и средой и решениями для HoloLens 2 приложений. Это приложение является великолепной визуальной демонстрацией для содержимого, приведенного ниже.

[!div class="nextstepaction"] Скачать приложение "основы качества"

Ниже перечислены значения для выполнения частоты кадров для каждой целевой платформы.

Платформа Частота целевых кадров
HoloLens 60 кадров/с
Windows Mixed Reality Ultra Штук 90 КАДРОВ/С
Windows Mixed Reality Штук 60 кадров/с

В приведенной ниже структуре представлены рекомендации по использованию ставок целевых кадров. Для получения советов по измерению и улучшению частоты кадров в среде Unity рекомендуется ознакомиться со статьей рекомендации по производительности для Unity .

Основные сведения о узких местах производительности

Если приложение имеет небольшую частоту кадров, первый шаг состоит в анализе и понимании того, где приложение получает ресурсоемкие вычисления. Существует два основных процессора, ответственных за работу с визуализацией сцены: ЦП и GPU, каждый из которых обрабатывает различные аспекты приложения смешанной реальности. Ниже приведены три ключевых места, где могут возникнуть узкие места:

  1. Поток приложения — ЦП - Отвечает за логику приложения, включая обработку входных данных, анимацию, физику и другую логику приложения.
  2. Прорисовка потока — ЦП в GPU — отвечает за отправку вызовов рисования в GPU. Когда приложение хочет отобразить объект, например куб или модель, этот поток отправляет в графический процессор запрос на выполнение операций.
  3. GPU — чаще всего обрабатывает графический конвейер приложения для преобразования трехмерных данных (моделей, текстур и т. д.) в пиксели. В итоге он создает 2D-образ для отправки на экран устройства.

Время существования кадра

как правило, HoloLens приложения будут привязаны к GPU, но не всегда. Используйте приведенные ниже средства и методики, чтобы понять, где размещается узкие места в конкретном приложении.

Анализ приложения

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

Ниже приведены некоторые распространенные средства, помогающие собрать подробные сведения о профилировании для приложения.

Профилирование в любой среде

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

При понижении разрешения отрисовки, если:

  1. Частота приложений увеличивается, и вы, скорее всего, привязаны к GPU
  2. Частота кадров приложения не изменилась, скорее всего, с границей ЦП

Note

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

UnityEngine.XR.XRSettings.renderScale = 0.7f;

Как улучшить приложение

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

Как правило, большинство работы в приложении смешанной реальности на ЦП предполагает выполнение "моделирования" сцены и обработку логики приложения. Следующие области предназначены для оптимизации:

  • Анимации
  • Физика
  • Выделение памяти
  • Сложные алгоритмы (т. е. Обратная кинематика, поиск по пути)

Рекомендации по производительности GPU

Общие сведения о пропускной способности и скорости заполнения

При отрисовке кадра на GPU приложение либо ограничивается пропускной способностью памяти, либо скоростью заполнения.

  • Пропускная способность памяти — это частота операций чтения и записи, которую GPU может выполнять из памяти.
    • Чтобы определить ограничения пропускной способности, уменьшите качество текстуры и проверьте, увеличилась ли частота кадров.
    • в Unity измените качество текстуры в Project редактирования > Параметры > качества Параметры.
  • Коэффициент заполнения относится к пикселям, которые могут быть выведены в секунду графическим процессором.
    • Чтобы определить ограничения скорости заполнения, уменьшите разрешение экрана и проверьте, увеличилась ли частота кадров.
    • В Unity используйте свойство ксрсеттингс. рендервиевпортскале.

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

  1. Уменьшение разрешений текстуры
  2. Использование меньшего числа текстур (нормалей, отраженных и т. д.)

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

  1. Число объектов для отрисовки или обработки
  2. Число операций на шейдер
  3. Число стадий GPU до окончательного результата (шейдеры Geometry, эффекты последующей обработки и т. д.)
  4. Число пикселей для отрисовки (разрешение экрана)

Уменьшить число многоугольников

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

Ограничение перерисовки

Высокая перерисовка происходит, когда несколько объектов визуализируются, но не отображаются на экране, так как они скрыты объектом окклудинг. Imagine взглянуть на стену, которая содержит объекты, находящиеся за ней. Вся геометрия будет обработана для подготовки к просмотру, но необходимо будет визуализировать только непрозрачную стену, что приведет к ненужным операциям.

Шейдеры

Шейдер — это небольшие программы, которые работают на GPU и выполняют два важных шага при подготовке к просмотру:

  1. Определение того, какие вершины должны рисоваться и где они находятся в пространстве экрана (шейдер вершин)
    • Шейдер вершин выполняется на вершину для каждой сетки.
  2. Определение цвета каждого пикселя (шейдер пикселей)
    • Построитель текстуры выполняется на пиксель и визуализируется с помощью геометрии в целевую текстуру рендеринга.

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

Рекомендации по кодированию шейдера
  • Используйте фильтрацию билинейной, когда это возможно
  • Переупорядочение выражений для использования встроенных функций MAD для умножения и добавления в одно и то же время
  • Предварительно вычислить как можно больше ресурсов ЦП и передать его в качестве констант в материал
  • Предпочитать операции перемещения из шейдера пикселей к шейдеру вершин
    • Как правило, количество вершин намного меньше числа пикселов (720p — 921 600 пикселей, 1080p — 2 073 600 пикселей и т. д.)

Удалить этапы GPU

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

Рекомендации по использованию памяти

Чрезмерная операция выделения и освобождения памяти может привести к нестабильной производительности, замороженным кадрам и другим неблагоприятным результатам. Особенно важно понимать требования к памяти при разработке в Unity, так как управление памятью контролируется сборщиком мусора.

Использование пулов объектов

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

См. также раздел