Caminho de rastreamento do BRDF Cook-Torrance


27

- Desculpe pelo longo post, mas prefiro fazer isso porque " Devil está nos detalhes " . :)

Estou escrevendo um rastreador de caminho a partir do zero e está funcionando bem para superfícies perfeitamente difusas (lambertianas) ( ou seja, o teste do forno indica - pelo menos visualmente) que ele economiza energia e as imagens renderizadas correspondem às geradas com o renderizador Mitsuba para o mesmo parâmetros). Agora estou implementando o suporte ao termo especular do modelo original de microfacet Cook-Torrance, para renderizar algumas superfícies metálicas. No entanto, parece que esse BRDF está refletindo mais energia do que a recebida. Veja as imagens de exemplo abaixo:

Imagem de referência Mitsuba.

Imagem acima: referência Mitsuba (presumida correta): imagem: Traçado com amostragem direta de luz, amostragem importante no hemisfério, comprimento máximo do trajeto = 5, 32 spat estratificado, filtro de caixa, rugosidade da superfície = 0,2, RGB.

Imagem renderizada

Imagem acima: Imagem renderizada real: Rastreio de caminho ingênuo de força bruta, amostragem uniforme do hemisfério, comprimento máximo do caminho = 5, 4096 spp estratificado, filtro de caixa, rugosidade da superfície = 0,2, RGB. Apesar de algumas diferenças com relação às configurações de renderização, é claro que a imagem renderizada não convergirá para a referência mostrada anteriormente.

Costumo pensar que não é um problema de implementação, mas uma questão referente ao uso adequado do modelo de Cook-Torrance dentro da estrutura da equação de renderização. Abaixo, explico como estou avaliando o BRDF especular e gostaria de saber se estou fazendo isso corretamente e, se não, por quê.

Antes de entrar nos detalhes minuciosos, observe que o renderizador é bastante simples: 1) implementa apenas o algoritmo de rastreamento de caminho ingênuo de força bruta - sem amostragem direta de luz, sem rastreamento de caminho bidirecional, sem MLT; 2) toda a amostragem é uniforme no hemisfério acima do ponto de interseção - nenhuma amostragem é importante, nem para superfícies difusas; 3) o caminho do raio tem um comprimento máximo fixo de 5 - sem roleta russa; 4) o brilho / refletância é informado através de tuplas RGB - sem renderização espectral.

Modelo de microfacete Cook Torrance

Agora tentarei construir o caminho que segui para implementar a expressão de avaliação especular do BRDF. Tudo começa com a equação render onde p é o ponto de intersecção na superfície , w o é o vetor de visualização, w i

Lo(p,wo)=Le+ΩLi(p,wi)fr(wo,wi)cosθdω
pwowié o vector de luz, é a radiância de saída ao longo w o , L i é a radiância incidente em cima do p juntamente w i e cos θ = nw i .LowoLipwicosθ=nwi

A integral acima ( ou seja, o termo de reflexão da equação de renderização) pode ser aproximada com o seguinte estimador de Monte Carlo quepé a função de densidade de probabilidade (PDF) que descreve a distribuição dos vetores de amostragemwk.

1Nk=1NLi(p,wk)fr(wk,wo)cosθp(wk)
pwk

Para renderização real, o BRDF e o PDF devem ser especificados. No caso do termo especular do modelo de Cook-Torrance, estou usando o seguinte BRDF que D=1

fr(wi,wo)=DFGπ(nwi)(nwo)
F=cspec+(1-cspec)(1-wih)5G=min(1,2(nh)(nwo)
D=1m2(nh)4exp((nh)21m2(nh)2)
F=cspec+(1cspec)(1wih)5
Nas equações acima,h=wo+wi
G=min(1,2(nh)(nwo)woh,2(nh)(nwi)woh)
ecspecé a cor especular. Todas as equações, com exceção deF, foram extraídas do artigo original. F, também conhecida comoaproximação de Schlick, é umaaproximaçãoeficiente e menos precisa do termo atual de Fresnel.h=wo+wi|wo+wi|cspecFF

m0.2

p(wk)=12π
wiwk
1Nk=1NLi(p,wk)(DFGπ(nwk)(nwo))cosθ(12π)
π
2Li(p,wk)(DFG(nwk)(nwo))cosθ
cosθ=nwk
2Li(p,wk)(DFGnwo)

Então, essa é a expressão que estou avaliando quando um raio atinge uma superfície especular cuja refletância é descrita pelo BRDF de Cook-Torrance. Essa é a expressão que parece refletir mais energia do que a recebida. Estou quase certo de que há algo errado com ele (ou no processo de derivação), mas simplesmente não consigo identificá-lo.

1π

Qualquer ajuda é muito bem vinda! Obrigado!

ATUALIZAR

D1πfr14

Dnew=1πm2(nh)4exp((nh)21m2(nh)2)
frnew(wi,wo)=DFG4(nwi)(nwo)
π2Li(p,wk)(DnewFGnwo)
Dfr

ATUALIZAÇÃO 2

Conforme apontado por PeteUK , a autoria da formulação de Fresnel apresentada no texto original da minha pergunta foi atribuída erroneamente a Cook e Torrance. A formulação de Fresnel usada acima é realmente conhecida como aproximação de Schlick e recebe o nome de Christophe Schlick. O texto original da pergunta foi modificado de acordo.


Não tenho certeza se você ainda está visitando este site, mas eu tenho uma pergunta sobre sua equação de Fresnel e a postei aqui
PeteUK

Respostas:


12

1 1πfr1 14

fr=DFG4(nWEu)(nWo),
então você acabaria com
π2euEu(p,Wk)(DFGnWo).

Eu já vi essa outra formulação para o BRDF de Cook-Torrance, onde a equação é multiplicada por 1 14 ao invés de 1 1π. No entanto, no final, o efeito dessa modificação é muito pequeno, porque substituiríamos 2, presente na equação final, por 1,57 (=π2) Eu fiz um teste aqui (por via das dúvidas ...) e, de fato, o problema persistiu.
Christian Pagot

@Capagot Um fator de 1 1/πàs vezes é incorporado às intensidades da fonte de luz (por convenção) e deixado de fora dos BRDFs; veja também esta pergunta . Mas isso é mais comum na renderização em tempo real do que no rastreamento de caminho. Além disso, você diz que seus testes lambertianos combinam perfeitamente com Mitsuba, então parece menos provável que esse seja o problema ... ainda que valha a pena investigar.
Nathan Reed

@ Capagot Acho que falta um 1 1π na sua função de distribuição D. O artigo ao qual vinculei inclui esse fator na distribuição Beckmann, que você usa, portanto, tendo1 14 em fr e 1 1π em Ddeve fazer o truque.
Wolle

@NathanReed Eu li o artigo sobre incorporação πna cor. No entanto, pelo motivo que você mencionou, eu estava convencido de que esse não era o problema.
Christian Pagot

@wolle Exatamente! Na verdade, eu já havia examinado rapidamente o artigo que você mencionou, mas não percebi isso! Acabei de alterar minha implementação para dar conta do1 1π em D e 1 14 em fr, e agora tudo funciona como um encanto! Vou incluir uma atualização para a pergunta com a resposta! Obrigado!
Christian Pagot

13

Estou publicando isso para qualquer pessoa que esteja se perguntando sobre a confusão entre os termos 1 1π e 1 14.

O termo 1 1π é um erro da referência original de Cook-Torrance.

De fato, todo o termo 1 14(nωEu) vem do jacobiano da transformação do ângulo sólido refletido para o ângulo sólido normal.

De acordo com a maioria dos trabalhos, o 1 14termo apareceu pela primeira vez em [Torrance, 67] .

Para uma boa explicação do termo, você deve verificar [Nayar, 91] , apêndice D. Aqui está uma imagem do mesmo artigo:

dω=dωr4porqueθEu

Além disso, Joe Stam concorda com Nayar 1 14 termo em [Stam 01, um modelo de iluminação para uma camada de pele delimitada por superfícies ásperas], apêndice B.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.