- Entschuldigung für den langen Beitrag, aber ich ziehe das vor, weil " Devil in den Details steckt" :)
Ich schreibe von Grund auf einen Pfad-Tracer, der für perfekt diffuse (Lambert'sche) Oberflächen gut funktioniert ( dh der Ofentest zeigt - zumindest optisch -, dass er energiesparend ist und gerenderte Bilder mit denen übereinstimmen, die mit Mitsuba Renderer erstellt wurden) Parameter). Jetzt implementiere ich die Unterstützung für den Spiegelbegriff des ursprünglichen Cook-Torrance-Mikrofacettenmodells, um einige metallische Oberflächen zu rendern. Es scheint jedoch, dass diese BRDF mehr Energie reflektiert als die erhaltene. Siehe die folgenden Beispielbilder:
Oberes Bild: Mitsuba-Referenzbild (als korrekt vorausgesetzt): Pfadverfolgung mit direkter Lichtabtastung, wichtige Halbkugelabtastung, maximale Pfadlänge = 5, 32 geschichtete spp, Box-Filter, Oberflächenrauheit = 0,2, RGB.
Oberes Bild: Tatsächlich gerendertes Bild: Brute-Force-naive Pfadverfolgung, gleichmäßige Halbkugelabtastung, maximale Pfadlänge = 5, 4096 geschichtete spp, Box-Filter, Oberflächenrauheit = 0,2, RGB. Trotz einiger Unterschiede in Bezug auf die Rendereinstellungen ist klar, dass das gerenderte Bild nicht mit der zuvor gezeigten Referenz konvergiert.
Ich neige dazu zu glauben, dass es sich nicht um ein Implementierungsproblem handelt, sondern um ein Problem in Bezug auf die ordnungsgemäße Verwendung des Cook-Torrance-Modells im Rahmen der Rendering-Gleichung. Im Folgenden erkläre ich, wie ich das Spiegel-BRDF bewerte, und möchte wissen, ob ich es richtig mache und wenn nicht, warum.
Beachten Sie, dass der Renderer recht einfach ist, bevor Sie auf die Details eingehen: 1) Implementiert nur den Brute-Force-naiven Pfadverfolgungsalgorithmus - keine direkte Lichtabtastung, keine bidirektionale Pfadverfolgung, keine MLT; 2) die gesamte Probenahme ist auf der Halbkugel über dem Schnittpunkt gleichmäßig - überhaupt keine wichtige Probenahme, auch nicht für diffuse Oberflächen; 3) der Strahlengang hat eine feste maximale Länge von 5 - kein russisches Roulette; 4) Strahlung / Reflexion wird durch RGB-Tupel angezeigt - keine spektrale Wiedergabe.
Cook Torrance Mikrofacettenmodell
Jetzt werde ich versuchen, den Pfad zu konstruieren, dem ich gefolgt bin, um den BRDF-Auswertungsausdruck zu implementieren. Alles beginnt mit der Wiedergabe Gleichung wo p der Schnittpunkt an der Oberfläche ist , , w o ist der Betrachtungsvektor, w i
Das obige Integral ( dh der Reflexionsterm der Wiedergabegleichung) kann mit dem folgenden Monte-Carlo-Schätzer 1 angenähert werden wobeipdie Wahrscheinlichkeitsdichtefunktion (PDF) ist, die die Verteilung der Abtastvektoren beschreibt
Für das eigentliche Rendern müssen BRDF und PDF angegeben werden. Für den spekularen Term des Cook-Torrance-Modells verwende ich das folgende BRDF wobei D=1 ist
Das ist der Ausdruck, den ich auswerte, wenn ein Strahl auf eine spiegelnde Oberfläche trifft, deren Reflexionsvermögen vom Cook-Torrance-BRDF beschrieben wird. Das ist der Ausdruck, der anscheinend mehr Energie widerspiegelt als die empfangene. Ich bin mir fast sicher, dass etwas nicht stimmt (oder an der Ableitung beteiligt ist), aber ich kann es einfach nicht erkennen.
Interessanterweise, wenn ich den obigen Ausdruck mit multipliziere Ich erhalte Ergebnisse, die richtig aussehen. Ich habe mich jedoch geweigert, das zu tun, weil ich es mathematisch nicht rechtfertigen kann.
Jede Hilfe ist herzlich willkommen! Vielen Dank!
AKTUALISIEREN
Wie @wolle weiter unten ausführt, wird in diesem Artikel eine neue Formulierung vorgestellt, die sich besser für die Pfadverfolgung eignet, bei der die Normalverteilungsfunktion (NDF) beinhaltet die Faktor und die BRDF beinhaltet die Faktor. Somit
UPDATE 2
Wie PeteUK betonte , wurde die Urheberschaft der Fresnel-Formulierung, die im Originaltext meiner Frage vorgestellt wurde, fälschlicherweise Cook und Torrance zugeschrieben. Die oben verwendete Fresnel-Formulierung ist eigentlich als Schlick-Näherung bekannt und wird nach Christophe Schlick benannt. Der ursprüngliche Text der Frage wurde entsprechend geändert.