Modelos de superfície baseados em microfacet de dispersão única como o original Torrance-Sparrow BRDF ou modelos derivados como o BSDF para superfícies dielétricas rugosas de Walter et al. negligenciar a inter-reflexão da luz entre microfacetes, o que resulta em perda de energia, causando escurecimento, especialmente em valores mais altos de rugosidade.
O problema pode ser facilmente demonstrado usando o teste do forno. As imagens a seguir mostram o comportamento da minha implementação de um microfacet condutor BRDF usando o modelo Smith e a distribuição GGX para parâmetros de rugosidade de 0,2 a 1,0 (o coeficiente de Fresnel é deliberadamente definido como 1 aqui para facilitar a visualização do problema):
Teste de forno de BSDF dielétrico bruto (IoR 1.51) usando o modelo Smith e a distribuição de microfacetos GGX para parâmetros de rugosidade de 0,2 a 1,0:
Eric Heitz et al. recentemente propuseram um modelo de dispersão múltipla que resolve o problema de escurecimento resolvendo completamente a interação da luz, mas há problemas de desempenho devido à natureza estocástica de sua rotina de avaliação, conforme mencionado pelo próprio Heitz no fórum LuxRender .
Existe um método de compensação conhecido para recuperar a energia perdida de modelos de espalhamento único? Não necessariamente fisicamente correto, mas pelo menos não quebrando a plausibilidade física (reciprocidade de Helmholtz e conservação de energia) demais e, idealmente, sem a necessidade de parâmetros de ajuste manual.
No Disney BSDF , há um componente parametrizado chamado "brilho" (basicamente um lóbulo brilhante baseado em Fresnel) que pode ser usado para compensar o escurecimento das bordas, mas, como mencionado no curso Siggraph 2015 , é um método muito ad hoc:
"... isso é muito aproximado e não funciona tão bem com outros valores de rugosidade ..."
O comentário acima mencionado de Eric Heitz no fórum LuxRender também sugere o uso de algum truque de compensação, mas, infelizmente, não entra em detalhes:
Que eu saiba, você pode usar alguns hacks mais simples para melhorar a conservação de energia nos modelos de dispersão única (como ajustar o albedo). No entanto, se você fizer isso, não poderá obter um material perfeitamente conservador de energia (por exemplo, vidro branco áspero perfeito) sem quebrar a reciprocidade do BSDF.