Unity proporciona algunas funciones relacionadas con el rendimiento que son específicas de la realidad extendida de Android y requieren el paquete de extensiones de Android XR. Habilita estas funciones para mejorar la velocidad de fotogramas y reducir la carga de la GPU a través del submuestreo de Vulkan y el ajuste espacial, y para reducir la latencia de renderización rastreada con el cierre tardío.
Requisitos previos
Antes de seguir esta guía, asegúrate de haber verificado y completado los siguientes requisitos previos:
- Completa todos los pasos para configurar tu proyecto en Unity.
- Importa el paquete de extensiones de Android XR para Unity.
Cómo habilitar el ajuste espacial
URP Application Spacewarp es una optimización de OpenXR que ayuda a mantener altas velocidades de fotogramas sintetizando cada segundo fotograma. La técnica usa vectores de movimiento y datos de profundidad de los fotogramas anteriores para predecir dónde deberían moverse los píxeles, lo que reduce la potencia de procesamiento y el uso de energía.
Beneficios
- Reduce la carga de trabajo de renderización de la GPU sintetizando fotogramas alternativos.
- Reduce significativamente la potencia de procesamiento y el consumo de energía.
- Utiliza la reproyección para reducir la latencia entre los movimientos del usuario y las actualizaciones de la pantalla.
Habilita esta función
- En el menú principal de Unity, haz clic en Edit > Project Settings.
- Expande la sección Administración de complementos de XR.
- Selecciona la pestaña que corresponda a tu dispositivo de RE actual.
- Ve a la sección OpenXR Feature Groups.
En la sección Todas las funciones, habilita Application SpaceWarp.
Habilita el submuestreo de Vulkan
El submuestreo de Vulkan permite crear y muestrear imágenes con densidades variables a través de mapas de densidad de fragmentos. Esta función de Vulkan permite que diferentes áreas de la pantalla se rendericen y transfieran a la memoria con diferentes resoluciones, lo que resulta especialmente útil para el renderizado foveal, en el que las áreas periféricas pueden usar una resolución más baja.
Beneficios
- Proporciona una mejora variable cuando se combina con la renderización foveal, según el factor de forma.
- Reduce el aliasing en las áreas periféricas a través del filtrado bilineal.
- Permite una renderización eficiente de velocidad variable en diferentes regiones de la pantalla.
Habilita esta función
- En el menú principal de Unity, haz clic en Edit > Project Settings.
- Expande la sección XR Plug-in Management y, luego, haz clic en OpenXR.
- Haz clic en el ícono de ajustes junto a Android XR (Extensions): Session Management.
Habilita Subsampling (Vulkan).
Habilita el cierre tardío
El enclavamiento tardío es una técnica que minimiza la demora entre el movimiento físico del usuario y el cambio visual resultante en la pantalla. Permite que la postura de la cabeza se actualice tarde en la canalización de generación de fotogramas, lo que mejora la comodidad y la frecuencia de actualización percibida de tus apps de XR. Esto se logra reduciendo la latencia de entrada en casi un tiempo de fotograma completo.
Beneficios
- Reduce significativamente la latencia de movimiento a fotón (MTP).
- Mejora la comodidad del usuario y reduce la cinetosis.
- Mejora la estabilidad y la precisión.
Habilita esta función
Para habilitar el cierre tardío, activa la función en el tiempo de ejecución de tu app:
private XRDisplaySubsystem xrDisplay;
private XRDisplaySubsystem.LateLatchNode lateLatchNode = XRDisplaySubsystem.LateLatchNode.Head;
void Start()
{
List<XRDisplaySubsystem> xrDisplaySubsystems = new();
SubsystemManager.GetSubsystems(xrDisplaySubsystems);
if (xrDisplaySubsystems.Count >= 1)
{
xrDisplay = xrDisplaySubsystems[0];
}
}
void Update()
{
if (xrDisplay != null)
{
transform.position += new Vector3(Mathf.Epsilon, 0, 0);
Quaternion rot = transform.rotation;
rot.x += Mathf.Epsilon;
transform.rotation = rot;
xrDisplay.MarkTransformLateLatched(transform, lateLatchNode);
}
}