Новости о продуктах
Оптимизация производительности Android XR с помощью Unity
Чтение займет 6 минут.

Samsung Galaxy XR уже здесь , на базе Android XR! Эта статья является частью нашей Недели, посвященной Android XR , в рамках которой мы предоставляем ресурсы — статьи в блоге, видео, примеры кода и многое другое — все это призвано помочь вам изучить, разработать и подготовить ваши приложения для Android XR.
На этой неделе Samsung выпустила Galaxy XR , созданный в сотрудничестве с Google и Qualcomm. Это захватывающее время для разработчиков, и мы хотели помочь вам добиться максимальной производительности от вашего XR-приложения.
Хотя низкая производительность игр и приложений на устройствах без поддержки XR может расстраивать пользователя, в мире XR производительность — это не просто опция, а фундаментальный фактор успеха вашего приложения. Если вы не достигнете целевой частоты кадров в XR, это может вызвать гораздо более серьезные проблемы, такие как укачивание.
В этом руководстве мы расскажем вам об основных оптимизациях производительности, которые необходимо понимать при разработке приложений для Android XR. Вы узнаете, какие функции обеспечивают наибольший прирост производительности, когда их использовать и как они взаимодействуют, чтобы помочь вам достичь целевой частоты кадров.
Вот к чему мы стремимся:
- Минимальная частота кадров: 72 fps (в соответствии с нашими рекомендациями по качеству воспроизведения).
- Дополнительно: 90 кадров в секунду с запасом времени 11 мс на кадр.
Для получения более подробной информации о том, почему важно поддерживать такую высокую частоту кадров, ознакомьтесь с нашими рекомендациями по производительности .
Особенности производительности, разработанные специально для XR
Начнём с рассмотрения двух специфических для XR функций повышения производительности: фовеального рендеринга и субдискретизации Vulkan.
Фовеальная визуализация
Фовеальная отрисовка — это оптимизация, имеющая два режима. Первый — статический режим , в котором центр экрана отрисовывается с более высоким разрешением, а разрешение постепенно снижается по мере удаления от него.
Второй режим — это режим отслеживания взгляда , который отображает детально область, на которую вы смотрите, при этом снижая качество изображения, отображаемого периферийным зрением. По сути, он имитирует работу человеческого зрения — когда мы видим мелкие детали только в той конкретной области, на которой фокусируемся.
Фовеальный рендеринг значительно снижает нагрузку на графический процессор без ущерба для воспринимаемого пользователем качества изображения. Преимущество фовеального рендеринга заключается в том, что пользователи не заметят снижения качества в периферийном зрении, но ваш графический процессор, безусловно, ощутит улучшение производительности.
Представьте, что вы создаёте музейный экспонат со сложными трёхмерными артефактами. Без фовеального рендеринга вам было бы сложно поддерживать 90 кадров в секунду, пытаясь отобразить всё в «поле зрения». С фовеальным рендерингом вы можете разместить высокополигональные детали там, куда смотрит пользователь, но фоновое окружение будет отображаться с более низким качеством. Ваши пользователи не заметят разницы, но у вас будет запас для добавления большего количества деталей в сцену.
Субдискретизация Vulkan
Vulkan Subsampling — лучший друг фовеального рендеринга. В то время как фовеальный рендеринг определяет, что именно нужно рендерить на разных уровнях качества, Vulkan Subsampling управляет эффективным рендерингом этих уровней качества с помощью карт плотности фрагментов.
В сочетании с фовеальным рендерингом субдискретизация Vulkan обеспечивает дополнительное повышение производительности на 0,5 мс. Она также помогает сгладить неровные края в периферийном зрении, делая изображение в целом более чистым.
Например, в авиасимуляторе, где пользователи сосредотачиваются на приборах и элементах управления, сочетание фовеального рендеринга с субдискретизацией Vulkan позволяет детально отображать элементы управления, но при этом периферийная структура кабины использует меньше ресурсов. Эти дополнительные 0,5 мс кажутся незначительными, но именно в этом разница между наличием места для дополнительного интерактивного элемента и просадкой кадров в напряженные моменты.
Возможности графического процессора для сложных сцен
Помимо фовеального рендеринга и субдискретизации Vulkan, существуют некоторые функции графического процессора, которые снижают излишнюю нагрузку за счет интеллектуального создания экземпляров и отсечения. Они особенно эффективны для сложных сцен с повторяющейся геометрией или значительным перекрытием.
Встроенный отсек графического процессора
Функция GPU Resident Drawer автоматически использует инстансирование GPU для сокращения количества вызовов отрисовки и высвобождения вычислительного времени CPU. Таким образом, вместо того, чтобы CPU сообщал GPU о каждом объекте по отдельности, GPU объединяет похожие объекты в группы.
Эта функция наиболее эффективна для больших сцен с повторяющимися элементами, таких как деревья в лесу, мебель в офисном здании или предметы, разбросанные по всему окружению.
Представьте себе лесную сцену с 200 деревьями, использующими одну и ту же базовую сетку. Без функции GPU Resident Drawer 200 вызовов отрисовки будут потреблять ресурсы GPU, освобождая тем самым ресурсы CPU. При включении этой функции GPU будет интеллектуально создавать экземпляры этих деревьев, что должно сократить количество вызовов отрисовки до 5-10. Это огромная экономия ресурсов GPU, которую вы сможете инвестировать в игровую логику или физические вычисления.
Отсечение невидимых объектов на графическом процессоре
Технология GPU Occlusion Culling использует графический процессор (GPU) вместо центрального процессора (CPU) для идентификации и пропуска рендеринга скрытых объектов. Она автоматически определяет, что скрыто за другими объектами, поэтому вы не тратите ресурсы GPU на то, что пользователь не видит.
Эта функция особенно полезна в помещениях с несколькими комнатами, плотной застройкой или архитектурными элементами, где стены, полы и предметы естественным образом загораживают обзор.
В качестве примера, предположим, вы создаёте многокомнатный дом. Зачем тратить ресурсы графического процессора на рендеринг детально проработанной кухни, которая полностью скрыта за стеной, когда пользователь находится в гостиной? Функция GPU Occlusion Culling автоматически пропускает рендеринг этих скрытых объектов, предоставляя вам больше ресурсов для производительности, предназначенных для того, что действительно видно.
Мониторинг вашей производительности
Недостаточно просто использовать эти функции. Необходимо также измерять результаты оптимизаций, чтобы количественно оценить их влияние и убедиться, что ваши изменения действительно работают.
API метрик производительности
API метрик производительности обеспечивает мониторинг использования памяти, производительности ЦП и ГП ваших приложений в режиме реального времени. Он предоставляет исчерпывающие данные из композиторского и исполняемого уровней, позволяя вам точно видеть, что происходит в вашем приложении.
Прежде чем вносить изменения, определите базовый уровень, проведите оптимизацию, измерьте влияние и повторяйте процесс. Такой подход, основанный на данных, позволяет вам быть уверенным в реальном улучшении производительности, а не полагаться на догадки.
До включения фовеального рендеринга время отрисовки кадра на вашем GPU может составлять 13 мс, что превышает ваш бюджет в 11 мс. Включите фовеальный рендеринг, повторите измерения, и, надеюсь, вы увидите, что оно снизится до 9 мс. Это 4 мс запаса, который вы получите, чтобы добавить больше деталей в сцену, улучшить визуальное качество в других местах или просто обеспечить более плавную работу с более широким спектром контента.
Без этих метрик вы оптимизируете вслепую. API метрик производительности предоставляет вам истинную информацию о том, что действительно помогает в вашем конкретном случае.
Отладчик кадров
Отладчик кадров — это встроенный в Unity инструмент, позволяющий точно понять, как отрисовывается ваша сцена покадрово. Он показывает последовательность вызовов отрисовки и позволяет пошагово проверять правильность работы оптимизаций.
Хотите убедиться, что SRP Batcher работает? Найдите записи 'RenderLoopNewBatcher' в отладчике кадров. Проверяете, правильно ли работает пакетная обработка GPU Resident Drawer? Найдите записи 'Hybrid Batch Group'. Эти визуальные подтверждения помогут вам понять, действительно ли ваши настройки оптимизации вступают в силу.
Просмотрите первые 50 вызовов отрисовки вашей сцены. Если вы видите, что похожие объекты отрисовываются по отдельности, а не группами, это говорит о том, что ваша система инстансирования или пакетной обработки работает некорректно. Отладчик кадров позволяет немедленно выявить эти проблемы, чтобы вы могли их устранить.
Дополнительные оптимизации
Помимо описанных выше оптимизаций, наше полное руководство по повышению производительности также включает в себя несколько других дополнительных оптимизаций. Вот краткое резюме:
- Настройки URP: Отключите HDR и постобработку для мобильной XR. Эти функции оказывают минимальное визуальное воздействие по сравнению с их снижением производительности на мобильном оборудовании, поэтому вы получите ощутимый прирост производительности с едва заметными визуальными изменениями.
- SRP Batcher: Снижает нагрузку на ЦП для сцен с множеством материалов, использующих один и тот же вариант шейдера. Минимизируя изменения состояния рендеринга между вызовами отрисовки, можно значительно сократить время, затрачиваемое ЦП на рендеринг.
- Частота обновления дисплея: динамически регулируется в диапазоне от 72 до 90 кадров в секунду в зависимости от сложности сцены. Снижайте частоту кадров во время сложных эпизодов для поддержания стабильности, а затем увеличивайте ее во время более простых моментов для максимально плавного взаимодействия.
- Текстуры глубины/непрозрачные текстуры: отключите их, если они не требуются для шейдерных эффектов. Они вызывают ненужные операции копирования на графическом процессоре, которые расходуют ресурсы без пользы для большинства приложений.
- Масштабирование рендеринга URP: Этот параметр позволяет выполнять рендеринг с пониженным разрешением для повышения производительности или масштабировать рендеринг для улучшения визуального качества.
Пошаговые инструкции по этим и другим оптимизациям вы найдете в нашем полном руководстве по повышению производительности Unity для Android XR.
Заключение
Производительность вашего XR-приложения — это не просто технический параметр. Это разница между комфортным и увлекательным использованием и тем, что вызывает у пользователей тошноту или дискомфорт. Оптимизация, которую мы рассмотрели, — это ваш инструментарий для достижения критически важных показателей частоты кадров на новейших XR-устройствах.
Вот ваш план действий:
- Начните с фовеального рендеринга и субдискретизации Vulkan. Эти специфические для XR-технологий функции обеспечивают немедленную и заметную экономию ресурсов графического процессора.
- Добавьте GPU Resident Drawer и Occlusion Culling, если у вас сложные сцены с повторяющейся геометрией или внутренними пространствами.
- Отслеживайте все показатели с помощью API метрик производительности, чтобы убедиться, что ваши изменения действительно приносят пользу.
- Изучите дополнительные оптимизации URP для повышения производительности.
Крайне важно постоянно проводить измерения и итеративно совершенствовать систему. Не каждая оптимизация принесет одинаковую пользу каждому проекту, поэтому используйте API метрик производительности, чтобы получить четкое представление о том, что действительно помогает в вашем конкретном случае.
Что дальше: расширение ваших навыков.
Готовы углубиться в тему? Ознакомьтесь с этими ресурсами:
- Руководство по повышению производительности Unity для Android XR — полные пошаговые инструкции по внедрению всех функций, описанных здесь .
- Начало работы с Unity и Android XR — настройка среды разработки и начало сборки .
- Документация для разработчиков Android XR — подробные руководства по всем функциям Android XR.
Продолжить чтение

Новости о продуктах
Рабочий процесс и потребности каждого разработчика в области ИИ уникальны, и важно иметь возможность выбирать, как именно ИИ поможет в разработке. В январе мы представили возможность выбора любой локальной или удаленной модели ИИ для обеспечения работы функций ИИ в Android Studio.
Matthew Warner • 2 мин чтения

Новости о продуктах
Android Studio Panda 3 теперь стабильна и готова к использованию в продакшене. Этот релиз предоставляет еще больше возможностей для управления и настройки рабочих процессов на основе ИИ, что делает создание высококачественных приложений для Android проще, чем когда-либо.
Matt Dyor • 3 мин чтения

Новости о продуктах
В Google мы стремимся предоставлять самые эффективные модели искусственного интеллекта непосредственно на устройства Android в вашем кармане. Сегодня мы с радостью объявляем о выпуске нашей новейшей открытой модели: Gemma 4.
Caren Chang , David Chou • 3 мин чтения
Будьте в курсе событий
Получайте еженедельно самые свежие новости о разработке Android прямо на свою электронную почту.


