Ich versuche, aus dem Blinn-Phong BRDF zu probieren.
Zum Testen verwende ich eine sphärische Lichtquelle (Lambertsche Emission), die auf einer Spiegelebene sitzt. Hier ist ein Referenzbild mit energiesparendem Phong mit Exponent 30000
:
Beachten Sie, dass keine Energie verloren geht. Ich möchte jetzt dasselbe für Blinn-Phong erreichen .
Hier ist mein Versuch (gleicher Exponent, aber auf Blinn-Phong BRDF):
Wie Sie sehen, geht ein erheblicher Teil der Energie verloren. Der von mir verwendete Normalisierungsbegriff stammt von hier und ist. Das Problem ist, dass dies ein Normalisierungsbegriff ist , kein Erhaltungsbegriff .
Ich glaube, das ist das erwartete Ergebnis. In Grafiken ist es üblich, dass BRDFs weniger als die eingegebene Energiemenge reflektieren, im Gegensatz zu genau der richtigen Menge, da dies normalerweise weniger schwierig ist. 1, 2
Meine Frage:
- Gibt es eine Version, die genau alle Energie spart?
- Wenn nicht, kann jemand zumindest bestätigen, dass dies erwartet wird?
NB Ich bin ziemlich sicher, dass dies kein Problem mit der Strahlgenerierung / PDF ist. Diese Bilder wurden unter Verwendung einer im PBRT-Buch S. 695 - pg. 699. Außerdem sieht eine nicht wichtige gesampelte Version sehr ähnlich aus (obwohl ich einen niedrigeren Exponenten verwenden musste, damit sie schnell genug konvergiert, und es dauerte immer noch 10.000 s / p).
1 Dies kann aus einem Shadowing / Masking-Argument für Mikrofacetten abgeleitet werden. Leider werden Mehrfachstreuungen ignoriert. Die richtige Antwort liegt irgendwo dazwischen.
2 In der Tat musste ich den Phong-Erhaltungsbegriff selbst ableiten.