Des modèles de surface à base de microfacets à diffusion unique comme le BRDF Torrance-Sparrow original ou des modèles dérivés comme le BSDF pour les surfaces diélectriques rugueuses de Walter et al. négliger l'inter-réflexion de la lumière entre les microfacets, ce qui entraîne une perte d'énergie provoquant un assombrissement, en particulier à des valeurs de rugosité plus élevées.
Le problème peut être facilement démontré en utilisant le test du four. Les images suivantes montrent le comportement de mon implémentation d'un microfacet conducteur BRDF utilisant le modèle Smith et la distribution GGX pour les paramètres de rugosité de 0,2 à 1,0 (le coefficient de Fresnel est délibérément réglé à 1 ici pour rendre le problème plus facile à voir):
Test au four du diélectrique brut (IoR 1.51) BSDF en utilisant le modèle Smith et la distribution de microfacettes GGX pour les paramètres de rugosité de 0,2 à 1,0:
Eric Heitz et al. ont récemment proposé un modèle de diffusion multiple qui résout le problème de l'obscurcissement en résolvant complètement l'interaction de la lumière, mais il y a des problèmes de performance en raison de la nature stochastique de sa routine d'évaluation comme indiqué par Heitz lui-même dans le forum LuxRender .
Existe-t-il une méthode de compensation connue pour récupérer l'énergie perdue des modèles à diffusion unique? Pas nécessairement physiquement correct, mais au moins ne pas briser la plausibilité physique (réciprocité de Helmholtz et conservation de l'énergie) trop et, idéalement, sans la nécessité de paramètres de réglage manuel.
Dans le BSDF de Disney , il existe un composant paramétré appelé «éclat» (essentiellement un lobe brillant à base de Fresnel) qui peut être utilisé pour compenser l'assombrissement des bords, mais comme ils le mentionnent dans leur cours Siggraph 2015, c'est une méthode très ad hoc:
"... ceci est très approximatif, et ne fonctionne pas aussi bien pour d'autres valeurs de rugosité ..."
Le commentaire d'Eric Heitz susmentionné dans le forum LuxRender suggère également d'utiliser un hack de compensation, mais, malheureusement, n'entre pas dans les détails:
À ma connaissance, vous pouvez utiliser des hacks plus simples pour améliorer la conservation de l'énergie dans les modèles à diffusion unique (comme l'ajustement de l'albédo). Cependant, si vous faites cela, vous ne pouvez pas obtenir un matériau parfaitement conservateur d'énergie (par exemple, un verre rugueux blanc parfait) sans rompre la réciprocité du BSDF.