Bidirectionals PathTracing - Warum darf der Multisampleestimator mehr als eine Pfadart enhalten?
-
Ich habe heute mal Bidirectionals Pathtracing implentiert und wundere mich über den Farbwertabschätzer.
Der Abschätzer ist so aufgebaut, dass er viele verschiedene Pfade, welche von der Kamera zur Lichtquelle gehen als Input bekommt. Jeder Pfad bekommt eine Wichtungsfunktion. Die Gewichte aller Pfade, welche die gleiche Länge haben müssen in der Summe eins ergeben.
Hier stehts nochmal (Zur Mitte scrollen)
http://graphics.ucsd.edu/~iman/BDPT/
The only criteria here is that all the weights for paths of a given length sum up to one:Any weighting that satisfies this condition would be an unbiased scheme which will converge to the final solution by increasing the number of samples.
Die Berechnung der Gewichte erfolgt laut Eric Veach über Multiple Importance Sampling.
Hier schreibt er das und hier sieht man auch sein Estimator, welcher für jeden Pixel aufgerufen wird und welcher dort F heißt.
Seite 326
http://graphics.stanford.edu/papers/veach_thesis/thesis.pdfDie Sache ist, die 'eigentliche' Formel für Multiple Importance Samling sieht aber so aus wie hier auf Seite 10:
https://graphics.stanford.edu/courses/cs348b-03/papers/veach-chapter9.pdf
Dort taucht nur EIN wi auf. Dieses muss in der Summe 1 ergeben.
Wenn ich nun 10 mal F berechnen, dann muss ich einfach nur die Summe aller F's nehmen und das Ergebniss durch 10 teilen. Schon habe ich die Farbe für ein Pixel berechnet.
So nun kommt die Sache welche mich verwundert. Warum enthält die einfache MIS-Formel nur ein wi, welches in der Summe 1 ergiebt. Der Bidirectional-Pathtracing-estimator enthält aber mehrere wi's welche alle für sich genommen in der Summe 1 ergeben.
Wenn ich nun also 10 mal das F beim Bidirectional Pathtracing berechne, dann müsste ich doch viel zu viel in der Summe haben (Zu helles Bild berechnen), da jedes F ja gleich mehrere Pfade enthält (z.B. ein Pfad der Länge 3, ein Pfad der Länge 4 und einer der Länge 5). Jeder dieser 3 Pfade geht dann mit den Gewicht 1 in die Summe von F ein und F ist somit 3 mal heller als wie es eigentlich sein dürfte oder?
Kann das sein, dass dieses F für jeden Pixel nur einmal aufgerufen wird anstatt wie in mein Beispiel 10 mal? Wenn ja, dann würde die Formel wieder Sinn ergeben.
Ich habe das bei mir jetzt mal so gemacht und habe das Gefühl, dass es viel schneller konvergiert.
-
Man muss durch die Anzahl der verschiedenen Pfade teilen. Sonst bekommt man zu viel Energie