Einzelstreuende Oberflächenmodelle auf Mikrofacettenbasis wie das ursprüngliche Torrance-Sparrow BRDF oder abgeleitete Modelle wie das BSDF für raue dielektrische Oberflächen von Walter et al. Vernachlässigen Sie die gegenseitige Reflexion von Licht zwischen Mikrofacetten, was zu einem Energieverlust führt, der insbesondere bei höheren Rauheitswerten zu einer Verdunkelung führt.
Das Problem kann mit dem Ofentest leicht demonstriert werden. Die folgenden Bilder zeigen das Verhalten meiner Implementierung eines leitfähigen Mikrofacetten-BRDF unter Verwendung des Smith-Modells und der GGX-Verteilung für Rauheitsparameter von 0,2 bis 1,0 (der Fresnel-Koeffizient wird hier absichtlich auf 1 gesetzt, um das Problem leichter erkennbar zu machen):
Ofentest des BSDF mit rauem Dielektrikum (IoR 1,51) unter Verwendung des Smith-Modells und der GGX-Mikrofacettenverteilung für Rauheitsparameter von 0,2 bis 1,0:
Eric Heitz et al. haben kürzlich ein Mehrfachstreumodell vorgeschlagen , das das Verdunkelungsproblem löst, indem die Lichtwechselwirkung vollständig gelöst wird. Es gibt jedoch Leistungsprobleme aufgrund der stochastischen Natur der Bewertungsroutine, wie sie von Heitz selbst im LuxRender-Forum festgestellt wurde .
Gibt es eine bekannte Kompensationsmethode zur Rückgewinnung der Energieverluste von Einzelstreumodellen? Nicht unbedingt physikalisch korrekt, aber zumindest nicht zu stark gegen die physikalische Plausibilität (Helmholtz-Reziprozität und Energieeinsparung) und im Idealfall ohne die Notwendigkeit von Hand-Tuning-Parametern.
Im Disney BSDF gibt es eine parametrisierte Komponente namens „Glanz“ (im Grunde ein glänzender Lappen auf Fresnel-Basis), die zur Kompensation der Verdunkelung an Kanten verwendet werden kann. Wie in ihrem Siggraph 2015-Kurs erwähnt, handelt es sich jedoch um eine sehr ad-hoc-Methode:
"... das ist sehr ungefähr und funktioniert nicht so gut für andere Rauheitswerte ..."
Der oben erwähnte Kommentar von Eric Heitz im LuxRender-Forum schlägt ebenfalls vor, einen Kompensations-Hack zu verwenden, geht aber leider nicht auf Details ein:
Meines Wissens können Sie einige einfachere Hacks verwenden, um die Energieeinsparung in den Einzelstreumodellen zu verbessern (z. B. das Optimieren der Albedo). Wenn Sie dies tun, können Sie jedoch kein perfekt energiesparendes Material (z. B. perfektes weißes raues Glas) erhalten, ohne die Reziprozität des BSDF zu brechen.