Pfadverfolgung des Cook-Torrance BRDF


27

- 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:

Mitsuba Referenzbild.

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.

Gerendertes Bild

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

Lo(p,wo)=Le+ΩLi(p,wi)fr(wo,wi)cosθdω
pwOwichist der Lichtvektor, w i .LOist die ausgehende Strahlung entlang , L i ist die auf p entlang w i einfallende Strahlung und cos θ = nwOLichpwichcosθ=nwich

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

1Nk=1NLich(p,wk)fr(wk,wO)cosθp(wk)
p .wk

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

fr(wi,wo)=DFGπ(nwi)(nwo)
F=cspec+(1-cspec)(1-wih)5G=min(1,2(nh)(nw
D=1m2(nh)4exp((nh)21m2(nh)2)
F=cspec+(1cspec)(1wih)5
In den obigen Gleichungen isth=wo+wi
G=Mindest(1,2(nh)(nwO)wOh,2(nh)(nwich)wOh)
undcspecist die spiegelnde Farbe. Alle Gleichungen mit Ausnahme vonFwurden aus dem Originalpapier extrahiert. F, auch alsSchlick-Näherung bekannt, ist eine effiziente und weniger genaue Näherung an den tatsächlichen Fresnel-Term.h=wO+wich|wO+wich|cspecFF

m0,2

p(wk)=12π
wichwk
1Nk=1NLich(p,wk)(DFGπ(nwk)(nwO))cosθ(12π)
π
2Lich(p,wk)(DFG(nwk)(nwO))cosθ
cosθ=nwk
2Lich(p,wk)(DFGnwO)

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 1π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)D beinhaltet die 1π Faktor und die BRDF fr beinhaltet die 14Faktor. Somit

Dnew=1πm2(nh)4exp((nh)2-1m2(nh)2)
und
frnew(wich,wO)=DFG4(nwich)(nwO)
Nach der Einbeziehung der obigen Gleichungen in die Rendering-Gleichung endete ich mit
π2Lich(p,wk)(DnewFGnwO)
was gut funktioniert hat! PS: Jetzt geht es darum, besser zu verstehen, wie die neue Formulierung funktioniertD und fr Hilfe bei der Erhaltung der Energieeinsparung ... aber das ist ein anderes Thema.

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.


Ich bin mir nicht sicher, ob Sie diese Site noch besuchen, aber ich habe eine Frage zu Ihrer Fresnel-Gleichung und habe sie hier veröffentlicht
PeteUK,

Antworten:


12

Nach diesem Papier , die1π in deinem fr sollte sein 14:

fr=DFG4(nwich)(nwO),
so würden Sie am Ende mit
π2Lich(p,wk)(DFGnwO).

Ich habe diese andere Formulierung für das Cook-Torrance-BRDF gesehen, bei der die Gleichung mit multipliziert wird 14 anstatt 1π. Letztendlich ist der Effekt dieser Modifikation jedoch sehr gering, da wir 2 in der endgültigen Gleichung durch 1,57 ersetzen würden (=π2). Ich habe hier einen Test gemacht (nur für den Fall ...), und das Problem bestand tatsächlich fort.
Christian Pagot

@ Capagot Ein Faktor von 1/πwird manchmal in Lichtquellenintensitäten (gemäß Konvention) einbezogen und aus BRDFs herausgelassen; siehe auch diese frage . Dies ist beim Echtzeit-Rendering jedoch häufiger der Fall als bei der Pfadverfolgung. Sie sagen auch, dass Ihre Lambert-Tests perfekt zu Mitsuba passen, so dass es weniger wahrscheinlich ist, dass dies das Problem ist ... dennoch könnte es sich lohnen, darüber nachzudenken.
Nathan Reed

@ Capagot Ich denke, Sie vermissen eine 1π in Ihrer Vertriebsfunktion D. Das Papier, mit dem ich verlinkt habe, enthält diesen Faktor in der Beckmann-Distribution, die Sie verwenden, also haben14 im fr und 1π im Dsollte den Trick machen.
Wolle

@ NathanReed Ich habe den Artikel über das Einbetten gelesen πin die Farbe. Aus dem von Ihnen genannten Grund war ich jedoch überzeugt, dass dies nicht das Problem war.
Christian Pagot

@wolle Genau! Eigentlich hatte ich mir die von Ihnen erwähnte Zeitung schon kurz angesehen, aber das habe ich nicht bemerkt! Ich habe gerade meine Implementierung geändert, um das zu berücksichtigen1π im D und 14 im frUnd jetzt funktioniert alles wie ein Zauber! Ich werde ein Update der Frage mit der Antwort hinzufügen! Vielen Dank!
Christian Pagot

13

Ich poste dies für alle, die sich über die Verwirrung zwischen den Begriffen wundern 1π und 14.

Der Begriff 1π ist ein Fehler aus der ursprünglichen Cook-Torrance-Referenz.

In der Tat die ganze Laufzeit 14(nωich) kommt vom Jacobi der Transformation vom reflektierten Raumwinkel zum normalen Raumwinkel.

Den meisten Zeitungen zufolge ist die 14Begriff erschien zuerst in [Torrance, 67] .

Eine schöne Erklärung des Begriffs finden Sie in [Nayar, 91] , Anhang D. Hier ist ein Bild aus demselben Artikel:

dω=dωr4cosθich

Auch Joe Stam stimmt mit Nayars überein 14 Begriff in [Stam 01, Ein Beleuchtungsmodell für eine durch raue Oberflächen begrenzte Hautschicht], Anhang B.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.