Suporte a exibição HDR multiplataforma no Unity 2023

Saudações da equipe de Gráficos da Unity. Estamos felizes em anunciar que, a partir do Unity 2023.2.0a18 (e 2023.2 beta), o Editor Unity e os Jogadores Autônomos agora oferecem suporte multiplataforma para saída HDR e total compatibilidade com o Universal e High Definition Render Pipeline.
Displays de alta faixa dinâmica (HDR) estão se tornando cada vez mais disponíveis. Eles são capazes de reproduzir imagens com maior brilho máximo e uma gama de cores mais ampla para alcançar melhor contraste (destaques/sombras) e saturação de cores. Isso resulta em variações mais realistas na luminância entre cenas, aumento de detalhes na superfície e percepção de profundidade aprimorada.

Antes de compartilharmos mais informações sobre como habilitar a exibição HDR para seu projeto, juntamente com suporte a plataformas e diretrizes úteis, vamos revisar rapidamente os conceitos de renderização e exibição HDR.
Quando a renderização HDR está habilitada, a câmera renderiza a cena em um framebuffer de ponto flutuante, permitindo que o pipeline de renderização armazene uma faixa maior de valores de cor e preserve melhor os detalhes. Cálculos de shader, como iluminação e pós-processamento, são realizados usando valores mais precisos (comparados à renderização SDR), o que leva a resultados mais convincentes e realistas.
Embora a renderização HDR tenha sido o fluxo de trabalho padrão por anos, a falta de exibição habilitada para HDR limita a profundidade de cor da imagem apresentável a um máximo de 8 bits por canal. Isso limita o número máximo de cores que um pixel pode representar (16.777.216 valores de cor diferentes) e a faixa máxima de brilho. O mapeamento de tons HDR para SDR é usado para remapear os valores HDR do buffer de cores em uma faixa dinâmica baixa e, opcionalmente, aplicar correção gama, antes de finalmente escrever os resultados na imagem da cadeia de troca para apresentação.
O Unity 2022.1 introduziu suporte para exibição HDR para o High Definition Render Pipeline (HDRP), ao direcionar plataformas de desktop e console. Isso funciona definindo o espaço de cores nativo do dispositivo ao criar a cadeia de troca e usando mapeamento de tons HDR personalizado para remapear o conteúdo do buffer de cores na faixa HDR nativa da exibição. A codificação HDR é então aplicada como um passo final antes de escrever na imagem da cadeia de troca HDR.
Com a saída HDR habilitada, o formato da imagem da cadeia de troca é definido para permitir uma maior profundidade de cor (10 ou 16 bits por canal). Isso permite que cada pixel represente uma faixa muito mais ampla de possíveis valores de cor (aproximadamente 68 bilhões de valores diferentes) e apresenta uma faixa de brilho muito aumentada.
Com o lançamento do Unity 2023.2, o Editor Unity e os Jogadores Autônomos agora oferecem suporte completo para mapeamento de tons HDR e exibição em todos os pipelines de renderização e plataformas capazes.
Você pode encontrar as novas configurações de exibição HDR nas Configurações do Player do seu projeto em Edit > Configurações do Projeto > Player > Outras Configurações:
- Permitir Saída de Exibição HDR
- Usar Saída de Exibição HDR
Essas configurações habilitarão a saída HDR para Jogadores Standalone do Unity e o Editor ao rodar em plataformas suportadas.
Com a saída HDR habilitada, você pode opcionalmente configurar a Profundidade de Bits da Cadeia de Troca para definir uma profundidade de cor preferida mais baixa (10 bits por canal) ou mais alta (16 bits por canal) para a imagem apresentada. Observação: Nem todos os dispositivos suportam formatos de buffer de 16 bits e podem reverter para 10 bits em vez disso.
Ao usar o Pipeline de Renderização Universal (URP), certifique-se de que os ativos do pipeline de renderização em uso estejam configurados para habilitar a renderização HDR. Selecione os ativos RP incluídos no projeto (geralmente encontrados na pasta Assets > Configurações ), em seguida, navegue até o inspetor do projeto e habilite Qualidade > HDR.
Por último, certifique-se de que o mapeamento tonal HDR esteja habilitado adicionando um componente Tonemapping ao volume de pós-processamento que afeta suas câmeras. Quando a saída HDR está habilitada, as seguintes configurações de mapeamento tonal devem ser impulsionadas pelas capacidades HDR do display:
- Brilho mínimo suportado
- Brilho máximo suportado
- Valor de Branco de Papel: Esse valor representa o brilho de uma superfície branca de papel representada no display, que determina o brilho geral do display
Você pode acessar a faixa HDR do display e o valor de branco de papel usando uma API C#.
Para uma experiência ideal do espectador, recomendamos fornecer controle em tempo de execução sobre esses parâmetros por meio de uma interface de calibração HDR designada. Em breve, compartilharemos um novo projeto de amostra de calibração HDR, que você pode usar como uma implementação de referência para começar.
Para informações mais detalhadas sobre mapeamento tonal HDR e saída, consulte a documentação atualizada para saída HDR no URP e saída HDR no HDRP.
Para utilizar a saída HDR em tempo de execução, o dispositivo deve estar conectado a um display compatível com HDR, e a GPU deve ter o suporte necessário para habilitar uma cadeia de troca HDR e apresentação.
A saída HDR é automaticamente desativada em tempo de execução ao rodar em dispositivos incompatíveis. Você pode consultar se o display HDR é suportado no display principal e se a saída HDR está habilitada usando HDROutputSettings.available.
Além do suporte existente para desktop e console disponível no Unity 2022, o suporte para dispositivos móveis é introduzido no Unity 2023.2 para as seguintes plataformas:
- iOS players (iOS 16+, iPadOS 16+)
- jogadores Android usando Vulkan e GLES (Android 9+, dependendo das capacidades do dispositivo)
Alguns dispositivos móveis comuns que oferecem suporte a display HDR incluem iPhone X e modelos mais novos, Samsung Galaxy S10 e modelos mais novos, Galaxy Note 10 e modelos mais novos, Galaxy Tab S6 e modelos mais novos…
Esta versão também introduz suporte XR para plataformas compatíveis. Por favor, consulte a documentação da plataforma XR para determinar o suporte a display HDR.
O processamento HDR é aplicado em duas etapas: mapeamento de tons HDR e codificação. Ambas as etapas são geralmente aplicadas durante a última passagem de renderização de pós-processamento.
A única exceção é quando se injetam passagens adicionais no URP, a serem executadas após o pós-processamento. Nesses casos, a codificação HDR é aplicada separadamente em uma passagem de "blit final", que é sempre chamada no final do pipeline de renderização.
Passagens de sobreposição personalizadas injetadas no evento RenderPassEvent.AfterRenderingPostProcessing exigirão tratamento especial para a saída HDR. Se a saída HDR estiver ativa e o pós-processamento estiver habilitado, as passagens anteriores teriam aplicado mapeamento de tons e conversão de espaço de cores. Como resultado, você precisará criar seus efeitos personalizados para funcionar com a faixa dinâmica e o espaço de cores esperados.
Ao usar a saída HDR, recomendamos habilitar a renderização HDR para todas as câmeras exibíveis. Você ainda pode desabilitar a renderização HDR em uma base por câmera, mas precisará garantir que não haja passagens de renderização executadas após o pós-processamento ou efeitos que insiram passagens após o pós-processamento. Ao usar renderização SDR com saída HDR, os seguintes recursos não são suportados:
- Redimensionamento
- FXAA
- Modos de Depuração HDR
- Passagens personalizadas após o pós-processamento
No Renderizador 2D, certifique-se de que o pós-processamento esteja desativado se você pretende usar renderização SDR com saída HDR.
Para informações mais detalhadas sobre as limitações e diretrizes acima, consulte a documentação oficial:
Por favor, experimente o novo suporte a exibição HDR em seu projeto e nos diga o que você acha.
Seu feedback tem sido fundamental e nos ajuda a priorizar as soluções mais significativas. Confira nosso roteiro público para votar em recursos que melhor atendem às suas necessidades e visite nossos Fóruns de Gráficos para mais informações. Se houver alterações adicionais que você gostaria de ver, sinta-se à vontade para enviar uma solicitação de recurso ou contatar a equipe diretamente.
Se você gostou desta análise aprofundada, fique atento a futuras análises técnicas dos desenvolvedores da Unity como parte da Tecnologia das Trincheiras série.
