Equação de renderização - por que insolúvel diretamente?

9

Por que a equação de renderização, introduzida por Kajiya em 1986, não é solucionável direta / analiticamente?

Blongphong
fonte
5
Boa pergunta, nenhum esforço de pesquisa.
ivokabel
Quanto você sabe sobre equações integrais em geral? Você está perguntando sobre uma solução analítica para isso?
galois

Respostas:

16

Infelizmente, não sou capaz de adicionar um comentário à resposta acima (reputação insuficiente), portanto farei assim.

Gostaria de salientar que o que Dragonseel descreve é ​​simplesmente uma equação integral (especificamente uma equação de Fredholm do segundo tipo). Existem muitas dessas equações que têm uma solução analítica; mesmo algumas formas da equação de renderização têm uma (por exemplo, a solução de um forno branco pode ser fornecida usando uma série geométrica convergente simples, mesmo que a equação de renderização seja infinitamente recursiva).

Também não é necessário influenciar a solução estimada limitando o número de recursões. A Roleta Russa fornece uma ferramenta útil para fornecer uma solução imparcial para uma equação de renderização infinitamente recursiva.

A principal dificuldade reside no fato de que as funções de refletância (BRDF), brilho emitido e visibilidade são altamente complexas e geralmente contêm muitas descontinuidades. Nesses casos, muitas vezes não há solução analítica, ou é simplesmente inviável encontrar essa solução. Isso também é verdade no caso unidimensional; a maioria das integrais carece de soluções analíticas.

Finalmente, gostaria de observar que, embora a maioria dos casos da equação de renderização não possua soluções analíticas, há muita pesquisa nas formas da equação de renderização que possuem uma solução analítica. O uso dessas soluções (como aproximações), quando possível, pode reduzir significativamente o ruído e acelerar o tempo de renderização.

Tom van Bussel
fonte
13

A equação de renderização é a seguinte:

insira a descrição da imagem aqui

Agora, a integral está sobre a esfera em torno do ponto x. Você se integra sob alguma luz atenuada, vinda de todas as direções.

Mas quanta luz entra? Esta é a luzL(x,ωi) que algum outro ponto x reflete na direção ωi de ponto x.

Agora você tem que calcular quanta luz esse novo ponto xreflete, o que requer resolver a equação de renderização para esse ponto. E a solução para esse ponto depende de um grande número de outros pontos, incluindox.

Em resumo, a equação de renderização é infinitamente recursiva.

Você não pode resolvê-lo exata e analiticamente porque possui integrais infinitas sobre domínios de integração infinitos.

Mas como a luz se enfraquece cada vez que é refletida, em algum momento o ser humano simplesmente não consegue mais notar a diferença. E, portanto, você realmente não resolve a equação de renderização, mas limita o número de recursões (digamos reflexões) a algo que seja 'suficientemente próximo'.

Dragonseel
fonte
11
Bem, você provavelmente poderia resolver a equação de renderização de um ponto analiticamente se tivesse uma cena estupidamente simples. E, possivelmente, você poderá obter uma solução analítica para toda a imagem projetada, se sua cena for ainda mais simples que isso. Mas isso seria inútil ... :)
joojaa 07/07
3
A cena teria que ser realmente simples, como apenas um único objeto plano. Como existe uma integração em toda a esfera, mesmo que haja dois pontos que possam se ver, a equação de renderização fica infinita. Cada ponto inclui o outro no domínio de integração. Portanto, apenas um único refletor que não pode refletir sobre si mesmo. então você poderia resolvê-lo. Simplesmente não haveria efeitos de iluminação global, então isso se resume à iluminação local. E isso é solucionável.
Dragonseel 07/07
Sim, isso seria estupidamente simples.
Joojaa 07/07
2
@joojaa Para meu entendimento, não é que a equação de renderização é impossível resolver em todos os casos, mas sim que a qualquer momento ele pode ser resolvido, é de nenhum uso prático
galois
4
Para sua informação, a sintaxe Mathjax funciona neste StackExchange, portanto, se você colocar sinais $ em torno de seus identificadores, eles parecerão todos matemáticos.
Julien Guertault