Renderização em unidades radiométricas ou fotométricas?

10

Na renderização tradicional, é típico fazer todos os cálculos com unidades radiométricas, como renderização espectral completa ou em componentes (XYZ, RGB, etc.).

No entanto, à medida que a renderização moderna adiciona modelos mais físicos, é conveniente que os artistas possam especificar valores nas unidades fotométricas mais familiares, por exemplo, intensidade de luz em lúmens.

insira a descrição da imagem aqui

Para manter o pipeline em um único tipo de unidade, siga um destes procedimentos:

  1. Converter unidades fotométricas em unidades radiométricas usando eficácia luminosa
  2. Mantenha todo o pipeline de renderização em unidades fotométricas
    • Sébastian Lagarde apresenta essa idéia muito bem nas notas do curso de sua apresentação do Siggraph 2014, Moving Frostbite to PBR

Minhas perguntas são as seguintes:

  1. Existem desvantagens em renderizar exclusivamente em unidades fotométricas?
    • Tanto quanto posso dizer, unidades fotométricas são apenas unidades radiométricas tendenciosas para o olho humano. Considerando que veremos a imagem final com nossos olhos, não vejo isso como um problema.
  2. Frostbite é um mecanismo de componente RGB. Um renderizador espectral teria alguma desvantagem adicional ao renderizar exclusivamente em unidades fotométricas?
RichieSams
fonte

Respostas:

9

É bom usar unidades fotométricas como uma escala geral para definir o brilho da luz. No entanto, há uma sutileza técnica que você deve conhecer. Vou citar um post que escrevi sobre o assunto no ano passado :

Com imagens RGB, é importante reconhecer que nossos dispositivos de exibição se comportam mais radiometricamente do que fotometricamente. Um valor de pixel vermelho de 255 e um valor de pixel verde de 255, resultam em quantidades iguais de fluxo radiante (watts) sendo geradas por um pixel na tela - não em quantidades iguais de fluxo luminoso. Da mesma forma, as câmeras digitais capturam valores de pixel que correspondem ao fluxo radiante, não ao fluxo luminoso.

É por isso que precisamos usar coeficientes luma ao converter imagens em escala de cinza ou ao calcular o brilho de um pixel, para obter um resultado perceptivamente preciso; e também significa que a renderização de imagens RGB ocorre mais naturalmente em unidades radiométricas do que em fotométricas.

Em outras palavras, a dependência do comprimento de onda das unidades fotométricas é diferente do que você pode estar esperando. Em espaços de cores RGB comuns, o branco é (1, 1, 1) e possui um espectro radiométrico aproximadamente plano; mas em um suposto "RGB fotométrico", (1, 1, 1) não seria branco; seria uma cor púrpura, com menos energia na faixa verde e mais nas faixas vermelha e azul. Um problema semelhante afligiria os renderizadores espectrais que tentam medir todos os seus compartimentos em unidades fotométricas dependentes do comprimento de onda, mas ainda pior, pois o brilho necessário para gerar uma dada luminância diverge em uma das extremidades do espectro visível, onde a função de eficiência luminosa humana vai para zero.

Portanto, se você deseja usar unidades fotométricas, é melhor "enganar" um pouco e não usar unidades fotométricas verdadeiras e dependentes do comprimento de onda, mas apenas usar um comprimento de onda fixo (como o verde de 555 nm, que é o pico da luminosidade humana). função de eficiência), ou talvez uma média no espectro, como uma unidade de referência, e aplique essa unidade única para medir todos os comprimentos de onda. Isso fará com que você tenha menos problemas ao importar cores e espectros RGB de outras fontes e ao gerá-los como saídas.

Nathan Reed
fonte