Рендирование на основе плиток в XR
Понимание рендеринга на плитке в XR.
Плитки GPUs широко используются в мобильных и неподключенных устройствах XR. Производительность на устройствах с плитками GPU повышается, когда в проекте используются функции, оптимизированные для архитектуры, основанной на плитках.
Рендирование вне плитки приводит к дополнительным проходам рендеринга и требует промежуточных данных для записи в внешнюю память и чтения из нее. Графические нагрузки неэффективны и увеличивают использование пропускной способности памяти и потребление энергии, что приводит к снижению производительности и сокращению времени работы батареи. Чтобы максимизировать производительность на неподключенных устройствах XR, минимизируйте операции вне плитки и используйте функции, оптимизированные для рендеринга на основе плитки.
Дополнительные сведения о рендеринге на основе плиток в XR и методах обеспечения того, чтобы рендеринг оставался на плитке, см. в следующих разделах.
О плитке на основе GPUs
Tile-based GPUs разделяет экран на небольшие области (плитки), которые рендируются на чипе в tile-buffer. Когда плитка рендируется, ее данные записываются в framebuffer в основной памяти. Tile-based GPUs позволяет ускорить память и повысить энергоэффективность на мобильных и untethered XR устройствах.
Советы по обеспечению рендеринга на основе плиток
Если ваш проект нацелен на не связанный XR устройство и позволяет Последующая обработка на плитке, вы должны убедиться, что ваш проект рендируется только на плитке.
Любая функция, которая создает промежуточные текстуры, приводит к дополнительному последнему проходу blit и нарушает рендеринг на основе плиток, что приводит к проблемам с производительностью приложения и устройства.
Только безпамятные промежуточные текстуры поддерживаются на плитке. Чтобы использовать безпамятные промежуточные текстуры, ваш проект должен использовать Vulkan или Metal API. Чтобы понять, как настроить API, см. Настройка графики APIs.
Функции, которые создают промежуточные текстуры без памяти, приводят к дополнительному последнему проходу блита и не могут оставаться на плитке, что нарушает проход рендеринга. Промежуточные текстуры без памяти вводят проблемы производительности от перемещения данных из плитки в память без плитки.
Следующих функций следует избегать на неподключенных устройствах XR, поскольку они вводят отображение вне плитки:
- Промежуточные текстуры
- Глубина и Непрозрачные текстуры.
- Фильтр увеличения
- URP встроенная последующая обработка
-
Функция рендерера которые требуют промежуточной текстуры:
- Наклейки
- FullScreenPass если FetchColorBuffer является
true - SSAO
Используйте просмотрщик графиков рендеринга для проверки проходов рендеринга
Чтобы гарантировать, что ваш проект останется на плитке, настройте свой URP ресурс и URP рендерер для рендеринга непосредственно текстуры глаза, что означает, что ваш проект использует один объединенный проход рендеринга. Вы можете использовать Просмотрщик графика рендеринга до Анализ графика рендеринга в URP и Объединение проходов рендеринга.
Пример просмотра графиков
На следующем изображении показана оптимальная конфигурация конвейера с пост-обработкой на плитке и как интерпретировать просмотрщик графиков рендеринга:
Синяя линия (A) представляет собой объединенные проходы рендеринга.
cameraTargetAttachment (В) и cameraDepthAttachment (C) функции пост-обработки на плитке используют получение кадрового буфера (обозначается символом ) F символ) (D) для получения cameraTargetAttachment и написать в Цвет обратного буфера (E).
Дополнительные ресурсы
- Последующая обработка на плитке
- Оптимизировать для не связанных XR устройств в URP
- Мобильный GPUs и плиточный рендеринг (документация разработчика Meta)