Sie müssen in der Tat immer mit dem Cosinus-Term multiplizieren (das ist Teil der Rendering-Gleichung). Wenn Sie jedoch indirekt mithilfe von Raytracing und damit Monte-Carol-Integration diffundieren (was in diesem Fall die häufigste Technik ist), müssen Sie den Beitrag jeder Probe durch Ihr PDF teilen . Dies ist gut exampled hier .
Beachten Sie auch, dass Sie in der genannten Referenz, wenn das PDF Begriffe enthält, die Sie auch in den Rendering-Gleichungen finden, den Code optimieren können, wenn Sie dies wünschen, indem Sie diese Begriffe streichen.
Vergessen Sie nicht, dass der BRDF einer diffusen Oberfläche ρ / π ist, wobei ρ für die Oberflächenalbedo steht. Wir müssen also das Ergebnis durch π teilen. Vergessen Sie jedoch nicht, dass wir im Fall der indirekten diffusen Komponente das Ergebnis von castRay durch das PDF der Zufallsvariablen teilen sollten, die, wie wir weiter oben in diesem Kapitel gezeigt haben, 1 / (2π) ist. Das Teilen von indirektem Diffus durch 1 / (2π) entspricht dem Multiplizieren dieses Wertes mit 2π. Und da die Albedo auch durch π geteilt wird, können wir den Code vereinfachen ...
Sie haben eine ähnliche Situation. Wenn Sie sich das PDF für die Kosinusabtastung ansehen, werden Sie feststellen, dass Begriffe aufgehoben werden können. Das heißt nicht, dass sie nicht unbedingt notwendig sind. Sie heben sich nur gegenseitig auf, wodurch der Code leicht optimiert werden kann (und einige Teilungen, Multiplikationen usw. vermieden werden). Sie sind hier mehr in der Mikrooptimierung ... was verwirrend sein kann, wenn Sie versuchen, die Theorie zu lernen, indem Sie nur optimierten Code betrachten (der oft nicht richtig kommentiert wird).
( C o s ( θ ) . . . )P.D F.= ( C o s ( θ ) . . . )c o s ( θ )π= . . .