Melhorar as taxas de frames, reduzir a carga da GPU e diminuir a latência de renderização usando as configurações das extensões do Android XR

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:

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

  1. No menu principal do Unity, clique em Edit > Project Settings.
  2. Expanda a seção Gerenciamento de plug-ins de XR.
  3. Selecione a guia que corresponde ao seu dispositivo XR atual.
  4. Acesse a seção Grupos de recursos do OpenXR.
  5. Na seção Todos os recursos, ative SpaceWarp de aplicativos.

    Configurações do Unity para spacewarp

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

  1. No menu principal do Unity, clique em Edit > Project Settings.
  2. Abra a seção Gerenciamento de plug-ins de XR e clique em OpenXR.
  3. Clique no ícone de engrenagem ao lado de Android XR (extensões): gerenciamento de sessões.
  4. Ative a subamostragem (Vulkan).

    Configurações do Unity para subamostragem do 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);
    }
}