Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Iluminação HDR
Introdução
Normally, an artist does all the 3D modeling, then all the texturing, looks at their awesome looking model in the 3D modeling software and says "looks fantastic, ready for integration!" then goes into the game, lighting is setup and the game runs.
Então, em que contexto o "HDR" pode ser usado? Para entendermos bem a resposta, primeiro precisamos entender como um display funciona.
Seu display mostra as taxas de iluminação linear variando de uma intensidade máxima até uma mínima. As Game Engines atuais conseguem calcular esses valores facilmente para cada uma das cenas. Então, qual o problema com o HDR?
Cada display tem limites variados de intensidade, dependendo do tipo. Já as Game Engines renderizam para quaisquer valores de intensidade. Assim, "intensidade máxima" significa algo apenas para o Display sRGB, enquanto a Game Engine poderia calcular qualquer intensidade a cada frame renderizado.
Isso significa que algumas transformações para a intensidade de iluminação de uma cena, especialmente às que alteram níveis de intensidade específicos da cena, precisam ser transformados e mapeados para limites específicos do display escolhido. Para entender melhor, basta pensar que estamos olhando cada cena na Game Engine por uma câmera virtual, que aplica a transformação da cena e depois disso prepara a saída para ser mostrada apenas em um display específico.
Nota
Godot supports high dynamic range output. You can read more about this on the HDR output page.
For advanced users, it possible to get a non-tonemapped image of the viewport with full HDR data, which can then be saved to an OpenEXR file.
Telas de computador
Quase todos os monitores requerem uma codificação não linear para os valores dos códigos a ele enviados. O monitor por sua parte, usando suas características únicas de transferência, "decodifica" os valores dos códigos em uma saída de taxa de luz linear, e projeta as taxas para fora das luzes coloridas independentemente pra cada campo de emissão avermelhado, esverdeado e azulado.
Para a maioria das telas ou displays de computador, as especificações estão de acordo com a norma IEC 61966-2-1, conhecida como a especificação de 1996 para o sRGB. Essa especificação diz como um display sRGB precisa funcionar, incluindo as cores das luzes nos pixels para LED e as características da função de transformação da entrada (OETF, em inglês) e de saída (EOTF, em inglês).
Not all displays use the same OETF and EOTF as a computer display. For example, television broadcast displays use the BT.1886 EOTF. However, Godot only supports sRGB and HDR displays.
O padrão sRGB é baseado na relação não-linear entre as saídas atuais de luz de uma tela comum CRT para computadores.
A matemática de um modelo baseado na cena exige que multipliquemos a cena por diferentes valores para ajustar as intensidades e a exposição a diferentes faixas de luz. A função de transferência do display (tela) não consegue renderizar corretamente o intervalo dinâmico mais amplo da saída da cena do motor de jogo usando apenas a função de transferência simples da própria tela. É necessária uma abordagem mais complexa para a codificação.
Linear de cena & importação de recursos
Trabalhar com sRGB linear de cena é mais complexo do que simplesmente acionar um único interruptor. Primeiro, os ativos de imagem importados devem ser convertidos para proporções de luz linear na importação. Mesmo quando linearizados, esses ativos podem não ser perfeitamente adequados para uso como texturas, dependendo de como foram gerados.
Há duas maneiras de fazer isso:
Função de transferência sRGB para exibir proporções lineares na importação de imagens
Este é o método mais fácil de usar ativos sRGB, mas não é o mais ideal. Um problema disso é a perda de qualidade. Usar 8 bits por canal para representar proporções de luz linear não é suficiente para quantizar os valores corretamente. Essas texturas também podem ser comprimidas posteriormente, o que pode agravar o problema.
Função sRBG to hardware para mostrar a conversão linear
A GPU vai fazer a conversão depois de ler os texels usando numeros quebrados. Isso funciona bem para PC e consoles, mas a maioria dos dispositivos mobile não tem suporte para isso, ou eles não tem suporte para texturas comprimidas (iOS por exemplo).
Linear de cena para não linear referenciado à exibição
Depois que toda a renderização é concluída, o render linear de cena precisa ser transformado para uma saída adequada, como uma tela sRGB. Para isso, ative a conversão para sRGB no Environment atual (mais sobre isso abaixo).
Lembre-se de que as conversões sRGB -> Linear de Exibição e Linear de Exibição -> sRGB devem sempre estar ambas ativadas. Não ativar uma delas resultará em visuais horríveis, adequados apenas para jogos independentes experimentais vanguardistas.
Parâmetros de HDR
As configurações de HDR podem ser encontradas no recurso Environment. Na maioria das vezes, elas estão dentro de um nó WorldEnvironment ou definidas em um nó Camera. Para mais informações, veja Ambiente e pós-processamento.