User Manual

Оптимизация приложений WebXR

Введение

Высокая и стабильная частота кадров критически важна для создания приятного XR-опыта. При создании контента для VR/AR важнее, чем когда-либо, тестировать и оптимизировать на ранних этапах и поддерживать целевую частоту кадров на протяжении всей разработки.

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

Для VR-опыта рендеринг особенно дорогостоящий из-за того, что сцена должна быть отрендерена отдельно для каждого вида (глаза). Хотя PlayCanvas хорошо оптимизирован для обеспечения того, чтобы рендеринг VR не дублировал усилия, стерео рендеринг остается более дорогостоящим, чем моно рендеринг.

Кроме того, устройства, такие как Oculus Rift и HTC Vive, требуют высоких частот кадров, таких как 75Hz или 90Hz, что еще больше увеличивает потребность в высокоэффективном рендеринге. Мобильные VR, хотя и не требуют высоких частот кадров, страдают от отсутствия встроенной поддержки эффектов искажения, что вызывает дополнительные накладные расходы на уровне JavaScript и WebGL.

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

Генерация световых карт в реальном времени

Каждый динамический источник света имеет стоимость в реальном времени за кадр. Чем больше у вас источников света, тем выше затраты и тем медленнее будет рендериться ваша сцена. Запекая источники света в световые карты, вы можете значительно сократить стоимость статических источников света до простого рендеринга текстуры. Световые карты могут быть сгенерированы офлайн с использованием вашего любимого инструмента 3D-моделирования, или вы можете использовать встроенную генерацию световых карт в реальном времени PlayCanvas.

Узнайте больше о использовании генерации световых карт в реальном времени.

Осторожное использование теней в реальном времени

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

Следите за заполнением и перекрытием

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

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

Использование расширения, такого как WebGL Insight, может помочь вам визуализировать перекрытие

Задержки сбора мусора

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

Инструменты профилирования

PlayCanvas поставляется с встроенным инструментом профилирования. В редакторе используйте кнопку Launch Profiler для запуска вашего приложения с активным профилированием. Узнайте больше о профайлере

Общие советы по оптимизации

Доступно еще больше рекомендаций по оптимизации.

This site is translated by the community. If you want to get involved visit this page