Pfadgewicht für direkte Lichtabtastung

7

Ich habe ursprünglich einen Pathtracer geschrieben, der nur vom BRDF abprallt, und jedes Sample wird einem Puffer hinzugefügt, der durch die aktuelle Anzahl der Frames dividiert wird.

Jetzt möchte ich bei jedem Sprung eine nächste Ereignisschätzung durchführen und das Licht entlang des Pfades direkt abtasten. Wie "gewichte" ich die mit normalem Pathtracing entnommenen Proben zusammen mit den Direktlichtproben? Selbst wenn ich das direkte Licht mit dem Raumwinkel des Lichts gewichte, kann ich bei mehr als einer Probe nicht mehr nur durch die Anzahl der Bilder dividieren, oder?

Newtorendering
quelle
2
Dies hat nichts mit Ihrer Frage zu tun, aber Sie scheinen wahrscheinlich daran interessiert zu sein, davon zu hören. Sie sollten die kosinusgewichtete Stichprobe überprüfen, wenn Sie noch nichts davon gehört haben. Anstatt mit cos Theta zu multiplizieren, lassen Sie Ihre Strahlen basierend auf cos Theta verteilen. Der einfachste Weg, dies zu tun, besteht darin, einen zufälligen Punkt auf einer Platte (x / z) auszuwählen und dann y so zu machen, dass es sich um einen normalisierten Vektor handelt. Am Ende probieren Sie aussagekräftigere Richtungen aus und erhalten eine schnellere Konvergenz.
Alan Wolfe
Es ist sehr schwer zu verstehen, was Sie zu sagen versuchen. Können Sie Ihre Frage klären? Sprechen Sie über progressive Pfadverfolgung und Wichtigkeitsabtastung?
JarkkoL

Antworten:

3

Mit "Bounces by the BRDF" meine ich, dass Sie zufällige Richtungen in der Hemisphäre auswählen und durch BRDF gewichten und dann über diese Stichproben mitteln. Ich denke, Sie akkumulieren ein Sample pro Frame, also dividieren Sie durch die aktuelle Anzahl von Frames.

Um theoretisch "korrekt" zu sein, sollten Sie diese Proben auch mit gewichten 2π, da dies der Raumwinkel der Halbkugel ist, über die Sie integrieren. Das ist nicht allzu wichtig, wenn Sie nur eine einzige Stichprobenmethode haben, aber wenn Sie mehrere kombinieren, ist es einfacher, sicherzustellen, dass alles konsistent ist, wenn Sie diese Faktoren richtig haben.

Um eine explizite direkte Lichtabtastung zu ermöglichen, müssen Sie dann von der Lichtabtastwahrscheinlichkeitsdichte in die Raumwinkelwahrscheinlichkeitsdichte am Empfängerpunkt konvertieren. Wenn die Lichtproben über die Fläche der Lichtquelle gleichmäßig sind, dann anstelle der einfachen2π Gewicht, würden Sie stattdessen diesen Gewichtsfaktor verwenden:

Ar2(NlightL)
wo A ist der Bereich der Lichtquelle, r ist der Abstand zwischen dem Empfängerpunkt (Strompfadpunkt) und dem gewählten Lichtquellenpunkt, Nlight ist die Normalen des Lichtpunktes und L ist der Einheitsvektor vom Pfadpunkt zum Lichtpunkt.

Dieser Faktor erklärt, wie dicht die abgetasteten Lichtquellenpunkte im Raumwinkel des Empfängerpunkts sind und sowohl mit der Entfernung als auch mit dem Winkel auf der Oberfläche der Lichtquelle variieren (die Punkte bündeln sich in Bereichen, in denen die Quellenoberfläche von der abfällt) Empfänger, z. B. um die Ränder eines sphärischen Flächenlichts).

Nach der Gewichtung mit diesem Faktor befinden sich die Direktlicht-Samples im gleichen Raumwinkelbereich wie die BRDF-Samples. Sie können sie also einfach addieren und durch die Gesamtzahl der Samples dividieren. Wenn Sie dies tun, wäre dies jetzt doppelt so viele Frames Ich mache eine BRDF-Probe und eine Lichtprobe pro Frame.

Es ist auch wichtig, die Beleuchtung des Lichts nicht doppelt zu zählen. Da Sie die Lichter jetzt explizit abtasten, müssen Sie sicherstellen , dass Sie die emittierende Farbe nicht einschließen, wenn Sie während der BRDF-Abtastung zufällig auf ein Licht treffen! Andernfalls würden die Lichter doppelt so hell erscheinen, wie sie sollten.

Eine Verfeinerung davon ist, dass Sie möglicherweise eine explizite Lichtabtastung nur auf den diffusen Teil des BRDF und nicht auf den spiegelnden Teil anwenden möchten. Ein schmales spiegelndes Highlight wird besser durch die Wichtigkeitsabtastung des BRDF behandelt. Dies bedeutet, dass Sie bei expliziten Lichtproben nur die diffuse Komponente des BRDF bewerten und dann, wenn Sie eine Lichtquelle durch einen Spiegelreflexionsstrahl treffen, deren emittierende Farbe dort einschließen würden .

Nathan Reed
quelle