- Visão geral
- Inicialização
- Buffers de troca
- Renderização
- Mapeamento de tons automático
- Preferência entre HDR e 120Hz
- Calibração de HDR para jogos
- Dolby Vision para jogos no XBOX
- Auto HDR
Visão geral
O HDR (High Dynamic Range) e o WCG (Wide Color Gamut) oferecem a melhor qualidade visual por meio de maior brilho e contraste, permitindo que detalhes nunca vistos antes, tanto nos tons escuros quanto nos brancos, fiquem visíveis ao mesmo tempo e com mais cores do que as disponíveis anteriormente. Para obter mais detalhes sobre HDR, consulte a apresentação da Xfest 2016 intitulada An Introduction to HDR and Wide Color Gamut on UHD Displays (XBOX Developer Downloads->Conference Material->Xfest 2016 GPU Track Videos) e pesquise os padrões de HDR e WCG compatíveis.- SMPTE ST.2084 High Dynamic Range Electro-Optical Transfer Function of Mastering Reference Displays
- BT.2020 Parameter values for ultra-high definition television systems for production and international programme exchange
Inicialização
Para gerar saída em HDR e WCG, um título precisa chamar XDisplayTryEnableHdrMode durante a inicialização (…\reference\system\xdisplay\xdisplay_members.md)). Se a TV conectada for compatível com HDR e WCG e as configurações do console também tiverem o HDR habilitado, essa chamada mudará a TV para o modo HDR. Essa API também retorna valores de luminância da TV que podem ser usados para otimizar a saída HDR do título para a tela conectada. Isso é chamado de mapeamento de exibição. XDisplayTryEnableHdrMode é o único mecanismo para um título mudar a TV do modo SDR (Standard Dynamic Range) para o modo HDR. Não há mecanismo para um título ativar e desativar o modo HDR da TV. Recomendamos que XDisplayTryEnableHdrMode seja chamado uma vez durante a inicialização. Entrar e sair do modo HDR pode fazer com que a TV fique preta e sem som por um período que varia de centenas de milissegundos a vários segundos. Esse tempo depende da TV e de quaisquer outros dispositivos HDMI entre o console e a TV. A TV sai do modo HDR e volta a ele se o usuário iniciar outro aplicativo que ocupe mais espaço na tela do que o título, ou seja, se o outro aplicativo estiver sendo executado em tela inteira ou no modo de preenchimento. Ir para a página inicial não causa uma mudança de modo. Encerrar o título ou iniciar um título diferente faz com que a TV volte ao modo SDR.Buffers de troca
Após a inicialização, um título deve criar recursos D3D12 como buffers de troca para dois planos de exibição. O primeiro plano de exibição é usado para HDR, enquanto o segundo plano de exibição é usado para SDR. Para dar suporte a GameDVR, transmissão e streaming durante o HDR, o título deve fornecer uma imagem SDR com mapeamento de tons. Fazer com que o título forneça a imagem SDR permite que ele forneça quadros SDR da mais alta qualidade. Observe que o sistema produzirá automaticamente uma imagem SDR com mapeamento de tons para capturas de tela. Veja a seguir os detalhes dos buffers de troca.- O recurso D3D12 para o buffer de troca HDR deve estar no formato DXGI_FORMAT_R10G10B10A2_UNORM. No XBOX Series X|S, o formato DXGI_FORMAT_R9G9B9E5_SHAREDEXP também é compatível.
- O recurso D3D12 para o buffer de troca SDR pode ser DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ou DXGI_FORMAT_R10G10B10A2_UNORM. No XBOX Series X|S, o formato DXGI_FORMAT_R9G9B9E5_SHAREDEXP também é compatível.
Renderização
Um título deve usar um sombreador para renderizar valores HDR10 nos buffers de troca do primeiro plano de exibição. Ou seja, os valores de cor devem estar no espaço de cores Rec.2020 (e, adicionalmente, no XBOX Series X|S, Rec. 709 e P3) e codificados usando a curva gama ST.2084. Os valores de cor dos buffers de troca do segundo plano de exibição devem estar no espaço de cores Rec.709 e podem usar a mesma codificação de curva gama que seria normalmente usada ao renderizar SDR para uma tela SDR. No XBOX Series X|S, o segundo plano de exibição é opcional. No XBOX Series X|S, um título tem a opção de renderizar valores HDR lineares em vez de valores não lineares com a curva gama ST.2084 aplicada. Os valores de cor podem estar no espaço de cores Rec. 709, Rec.2020 ou P3 e ser normalizados entre 0.0 e 1.0. Um branco D65 de 10.000 nits é sempre representado como (1.0, 1.0, 1.0), independentemente do espaço de cores usado. Para essa opção, o título precisa usar o formato de buffer de troca DXGI_FORMAT_R9G9B9E5_SHAREDEXP junto com o espaço de cores de apresentação DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P2020, DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_D65P3 ou DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709. Consulte a seção Parâmetros do plano de apresentação para obter mais detalhes. Se o conteúdo do título não utilizar toda a gama de cores Rec. 2020, é aconselhável renderizar nas gamas menores P3 e Rec. 709, pois isso melhora a precisão das cores, especialmente ao usar o formato de buffer de troca DXGI_FORMAT_R9G9B9E5_SHAREDEXP. Isso também evita a sobrecarga de uma conversão de gama para Rec. 2020, porque a conversão será realizada pelo hardware de exibição sem custo.Mapeamento de tons automático
Em alguns casos, um título pode depender do sistema para gerar automaticamente uma imagem SDR com mapeamento de tons, um processo conhecido como mapeamento de tons automático. Quando esse recurso é ativado, o sombreador do título é instruído a não renderizar valores de cor em um plano de exibição secundário. Dois sinalizadores principais estão envolvidos nesse processo: D3D12XBOX_RESOURCE_FLAG_ALLOW_AUTOMATIC_GAMEDVR_TONE_MAP e D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET. O sistema, em nome do título, chamará um sombreador de computação para realizar o mapeamento de tons. A operação desse sombreador de computação pode ser observada em uma captura de GPU do PIX, especificamente dentro do grupo de eventos rotulado Auto Tone Mapping, que ocorre logo antes da chamada Present. É importante observar que esse recurso utiliza uma quantidade de memória, largura de banda e recursos de GPU semelhante à que seria usada se o próprio título produzisse a imagem SDR. Em outras palavras, o driver gráfico alocará recursos adicionais para o plano de exibição secundário. Consulte também a API do XBOX One SetHDRToneMapperX. No XBOX Series X|S, o mapeamento de tons automático pode trazer um benefício de desempenho, já que ele é feito em hardware. Portanto, o título não precisa gastar ciclos de GPU nem memória extra para produzir a imagem SDR com mapeamento de tons. Você pode esperar uma economia de 0,12 ms no XBOX Series X em 4K, bem como no XBOX Series S em 1440p. Em relação à memória, ao usar buffer triplo em 4K, um título economizará quase 100 MB por não precisar alocar buffers extras da cadeia de troca para SDR.Preferência entre HDR e 120Hz
Um título pode querer dar suporte tanto a HDR quanto a 120Hz. Ao habilitar o HDR por meio de XDisplayTryEnableHdrMode, um título pode definir uma preferência por HDR ou 120Hz caso ambos não possam ser compatíveis com a configuração de console e TV do usuário. Consulte o exemplo Simple120Hz. Ao chamar a API para tentar habilitar o HDR, um título pode definir a preferência para indicar se prefere HDR ou alta taxa de atualização. Se possível, fornecemos ambos; caso contrário, fornecemos com base na preferência do título. Um título pode perguntar ao usuário ou tomar uma decisão por ele (por exemplo, com base no modo de jogo, como multijogador); isso fica a critério do jogo. Para obter mais informações, consulte o tópico da API XDisplayTryEnableHdrMode.Calibração de HDR para jogos
O aplicativo HDR Game Calibration mostra uma série de padrões de teste para determinar as características de uma TV HDR. O aplicativo pode ser encontrado nas Configurações do console, em “Opções de TV e exibição”, “Calibrar HDR para jogos”.
- Não implementar uma tela de calibração específica do jogo e apenas usar os valores de calibração da API para implementar o mapeamento de exibição.
- Implementar uma tela de calibração específica do jogo, mas usar os valores de calibração da API como valores padrão e valores iniciais para a tela de calibração do jogo. A vantagem dessa opção é que, mesmo que o jogador não use a tela de calibração do jogo, o jogo ainda usará valores padrão corretos. Além disso, se o jogador usar a tela de calibração do jogo, ela já começará com bons valores.
