O Unity oferece alguns recursos relacionados ao desempenho que são específicos do Android XR e exigem o pacote Android XR Extensions. Ative esses recursos para melhorar as taxas de frames e reduzir a carga da GPU usando spacewarp e subamostragem do Vulkan, além de reduzir a latência de renderização rastreada usando o latching tardio.
Pré-requisitos
Antes de seguir estas orientações, verifique se você confirmou e concluiu os pré-requisitos a seguir:
- Conclua todas as etapas para configurar seu projeto no Unity.
- Importe o pacote de extensões do Android XR para Unity.
Ativar o spacewarp
O URP Application Spacewarp é uma otimização do OpenXR que ajuda a manter altas taxas de frames sintetizando um frame a cada dois. A técnica usa vetores de movimento e dados de profundidade de frames anteriores para prever onde os pixels devem se mover, reduzindo o poder computacional e o uso de energia.
Vantagens
- Reduz a carga de trabalho de renderização da GPU sintetizando frames alternativos.
- Reduz significativamente o consumo de energia e a capacidade computacional.
- Usa a reprojeção para reduzir a latência entre os movimentos do usuário e as atualizações da tela.
Ativar esse recurso
- No menu principal do Unity, clique em Edit > Project Settings.
- Expanda a seção Gerenciamento de plug-ins de XR.
- Selecione a guia que corresponde ao seu dispositivo XR atual.
- Acesse a seção Grupos de recursos do OpenXR.
Na seção Todos os recursos, ative SpaceWarp de aplicativos.
Ativar a subamostragem do Vulkan
A subamostragem do Vulkan permite que as imagens sejam criadas e amostradas em densidades variáveis usando mapas de densidade de fragmentos. Esse recurso do Vulkan permite que diferentes áreas da tela sejam renderizadas e transferidas para a memória em resoluções diferentes, o que é particularmente útil para a renderização foveada, em que as áreas periféricas podem usar uma resolução mais baixa.
Vantagens
- Oferece melhorias variadas quando combinado com a renderização foveada, dependendo do formato.
- Reduz o aliasing em áreas periféricas com filtragem bilinear.
- Permite a renderização eficiente de taxa variável em diferentes regiões da tela.
Ativar esse recurso
- No menu principal do Unity, clique em Edit > Project Settings.
- Abra a seção Gerenciamento de plug-ins de XR e clique em OpenXR.
- Clique no ícone de engrenagem ao lado de Android XR (extensões): gerenciamento de sessões.
Ative a subamostragem (Vulkan).
Ativar o bloqueio tardio
O bloqueio tardio é uma técnica que minimiza o atraso entre o movimento físico do usuário e a mudança visual resultante na tela. Isso permite que a postura da cabeça seja atualizada no final do pipeline de geração de frames, o que melhora o conforto e a taxa de frames percebida dos seus apps de XR. Isso é feito reduzindo a latência de entrada em quase um tempo de frame inteiro.
Vantagens
- Reduz significativamente a latência de movimento para fóton (MTP, na sigla em inglês).
- Melhora o conforto do usuário e reduz o enjoo de movimento.
- Melhora a estabilidade e a precisão.
Ativar esse recurso
Para ativar a vinculação tardia, ative o recurso no tempo de execução do 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);
}
}