С 31 августа 2022 г. Mobile SDK и библиотека VrApi не поддерживаются. Мы будем предоставлять обновления через расширения OpenXR и наш пакет OpenXR Mobile SDK, а не через обновления API Meta для мобильных устройств или ПК.
Прекращение поддержки Mobile SDK означает следующее:
Новые приложения не будут иметь доступа к API Meta Native Mobile, но существующие приложения смогут по-прежнему их использовать.
Помощь при создании новых приложений с использованием Meta Native API не предоставляется. Рекомендации по переносу существующих приложений в OpenXR можно найти в руководствах для разработчиков.
В Meta Native API будут устранены только критические проблемы, связанные с обеспечением безопасности, конфиденциальности или защиты.
Любое тестирование Meta Native Mobile будет ограничено автоматизированными тестами качества, чтобы гарантировать работоспособность основных функций.
В этом руководстве рассказывается, как реализовать фиксированный фовеальный рендеринг (FFR) в нативном приложении VRAPI. Чтобы понять, как работает FFR и как проводить его отладку, перейдите по этому адресу.
Как реализовать динамическую фовеацию
Регулировка динамической фовеации — это рекомендованный способ использования FFR. Динамическую FFR можно активировать с помощью:
Динамическая фовеация отключена по умолчанию. Когда динамическая фовеация включена, уровень фовеации будет автоматически настраиваться с максимальным значением, установленным на VRAPI_FOVEATION_LEVEL. Для настройки этого вызовите следующее:
При вызове level может быть 0, 1, 2, 3 или 4. Уровни фовеации 3 (высокий) и 4 (максимально высокий) считаются одинаковыми при динамической фовеации. Выбор одного из этих двух уровней совпадает с выбором VRAPI_FOVEATION_LEVEL. Например, если VRAPI_FOVEATION_LEVEL установлен на уровень 4, динамическая фовеация будет изменяться только между уровнями 0, 1, 2 и 4.
Поскольку динамический фовеальный рендеринг использует загрузку ГП для изменения уровня фовеации, он достаточно реактивен, и уровень должен увеличиваться до того, как появится устаревший кадр, в отличие от фиксированного уровня FFR. Однако, если наблюдается увеличенное количество устаревших кадров на определенных уровнях, динамический FFR можно включить или выключить в этих зонах. Использование динамического FFR настоятельно рекомендуется.
Если разработчики приложений с динамическим FFR хотят увидеть, как выглядит их приложение, чтобы проверить, не слишком ли высок уровень FFR, они могут использовать следующую команду setprop:
setprop debug.oculus.foveation.dynamic 0
Эта команда сразу отключит динамический FFR, и уровень фовеации немедленно установится на VRAPI_FOVEATION_LEVEL без необходимости перекомпилировать версию приложения с нединамическим FFR.
Как реализовать статический фиксированный фовеальный рендеринг
Сначала нужно проверить, поддерживает ли устройство фовеальный рендеринг. Проверьте системное свойство VRAPI_SYS_PROP_FOVEATION_AVAILABLE, которое вернет VRAPI_TRUE, если поддерживается фовеальный рендеринг.
Затем, чтобы использовать FFR, вызовите следующее, чтобы настроить степень фовеации:
Для улучшения визуального качества фовеального рендеринга мы рекомендуем приложениям включать подвыборочную компоновку. Это включит билинейное увеличение разрешения в областях с низким разрешением, что приведет к более плавному изображению и устранит артефакты с пикселями в периферийном зрении (см. пример изображения ниже). Подробнее о подвыборочной компоновке см. в спецификациях GL и Vulkan.
Чтобы включить подвыборочную компоновку, просто добавьте флаг VRAPI_SWAPCHAIN_CREATE_SUBSAMPLED_BIT при создании подстановки текстур цвета:
ovrSwapChainCreateInfo swapChainCreateInfo = {
.Format = colorFormat,
.Width = width,
.Height = height,
.Levels = 1,
.FaceCount = 1,
.ArraySize = 2,
.BufferCount = 3,
.CreateFlags = VRAPI_SWAPCHAIN_CREATE_SUBSAMPLED_BIT, // make sure the swapchain is created with subsampled bit!
.UsageFlags = VRAPI_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT,
};
colorTextureSwapChain = vrapi_CreateTextureSwapChain4(&swapChainCreateInfo);