Pelo meu entendimento, as harmônicas esféricas às vezes são usadas para aproximar certos aspectos da iluminação (dependendo da aplicação).
Por exemplo, parece que você pode aproximar a causa da iluminação difusa por uma fonte de luz direcional em um ponto de superfície ou em partes dele, calculando os coeficientes SH para todas as bandas que você está usando (para qualquer precisão que desejar) na direção da superfície normal e escalando-o com o que for necessário para escaloná-lo (por exemplo, intensidade de cor clara, ponto (n, l), etc.).
O que ainda não entendi é o que isso deve realizar. Quais são as vantagens reais de fazê-lo dessa maneira, em vez de avaliar o BRDF difuso da maneira normal. Você salva cálculos em algum lugar? Há alguma informação adicional contida na representação SH que você não pode obter dos resultados escalares da avaliação normal?
fonte
Respostas:
O motivo para usar harmônicos esféricos é aproximar a distribuição de luz recebida em torno de um ponto - normalmente luz indireta calculada por algum algoritmo de iluminação global. Em seguida, o BRDF também é aproximado com harmônicos esféricos, para permitir calcular com eficiência a luz de saída vista pelo espectador, pegando o produto escalar dos coeficientes SH de entrada de luz com os coeficientes SH de BRDF. Isso aproxima a convolução da luz recebida com o BRDF, como visto na equação de renderização.
Se você deseja apenas receber luz de fontes pontuais, não precisa de SH. As luzes pontuais são tratadas com mais precisão apenas avaliando o BRDF diretamente. Além disso, se você tiver um ambiente fixo (céu etc.) do qual deseja receber luz, poderá gerar mapas de cubo pré-convoluídos offline (usando CubeMapGen por exemplo) que fazem um bom trabalho ao aproximar a convolução do mapa do ambiente com o BRDF. Também não há necessidade de SH aqui.
Onde a SH é realmente útil é quando você tem uma cena complexa e deseja iluminação indireta, ou seja, iluminação de rejeição. Nesse caso, a distribuição da luz varia de um lugar para outro. Em princípio, cada ponto individual da cena possui um ambiente de iluminação diferente, com base em seus arredores. Na prática, amostramos a iluminação em pontos discretos usando algum algoritmo de iluminação global. Existem várias maneiras de fazer isso - você pode experimentar a iluminação em cada vértice das superfícies, por exemplo, ou em cada texel de um mapa de luz. Ou crie uma representação volumétrica usando uma grade ou uma malha tetraédrica .
A questão é que há um grande número de pontos em que a iluminação é amostrada e, portanto, precisamos de uma representação flexível, mas muito compacta, da iluminação em torno de um ponto, para evitar o consumo de muita memória. SH cumpre esse papel muito bem. Também possui a propriedade útil de que funciona bem com interpolação, ou seja, os coeficientes SH podem ser interpolados de um ponto de amostra para outro e a iluminação intermediária se comportará razoavelmente. E como captura a distribuição angular geral da luz recebida, não apenas a luz de uma direção, você pode usá-la com uma superfície mapeada normal e obter bons resultados.
Note-se, no entanto, que a SH é realmente útil apenas para iluminação difusa. A menos que você use um número verdadeiramente insano de coeficientes SH, isso embaçará demais a distribuição angular da luz recebida. Para iluminação indireta especular de alta qualidade, é necessário algo mais, como mapas de cubo com correção de paralaxe e / ou rastreamento de raios no espaço da tela.
fonte
Resposta curta, cálculos de luz física mais precisos. (com relação a algumas características de interação da superfície da luz).
Infelizmente, o problema está na definição da maneira normal . O modelo de reflexão phong "normal" foi adotado há muito tempo pela comunidade de renderização em tempo real desde o início e tem sido o padrão de fato devido à sua simplicidade que o torna apropriado para o uso da renderização em tempo real.
O problema , porém , é que a interação luz / material na vida real é tão complicada que não pode ser modelada por um único BRDF.
Os BRDFs são uma abstração de como a interação real com a luz deve ocorrer. phong é apenas mais um, que tem a vantagem da simplicidade.
Na computação gráfica, existem diferentes BRDFs que se enquadram em duas categorias principais:
Falando sobre a segunda categoria, cada BRDF tenta alcançar certas características com a interação superficial da luz. O BRDF mais simples possível é o lambertiano, que tenta modelar a dispersão da subsuperfície e é frequentemente usado em computação gráfica.
Em gráficos de computador em tempo real, geralmente os BRDFs são selecionados manualmente e seus parâmetros definidos para obter a aparência desejada (por exemplo, usando Phong com certos valores para modelar uma superfície plástica ou cromada).
Por outro lado, às vezes os BRDFs são medidos diretamente da superfície desejada (e não são representados por uma equação matemática). Isso nos fornece dados muito mais precisos fisicamente sobre a superfície que, de outra forma, são difíceis de realizar analiticamente.
Um método para ajustar esses dados capturados é selecionar um BRDF analítico e ajustá-los a ele. Harmônicos esféricos é apenas uma técnica usada para representar essas quantidades medidas e ajustá-las em um modelo analítico de BRDF.
O melhor recurso para a teoria BRDF pode ser encontrado na renderização em tempo real
fonte