Rzeczywiście zawsze trzeba pomnożyć przez cosinus (to część równania renderowania). Chociaż w przypadku rozpraszania pośredniego za pomocą śledzenia promieni, a tym samym integracji monte-carol (co jest w tym przypadku najczęściej stosowaną techniką), należy podzielić udział każdej próbki przez plik PDF . Jest to dobrze zbadane tutaj .
Zauważ też, że we wspomnianym odnośniku, jeśli plik PDF zawiera warunki, które znajdują się również w równaniach renderowania, możesz zoptymalizować kod, jeśli chcesz, anulując te warunki.
Nie zapominaj, że BRDF powierzchni rozproszonej wynosi ρ / π, gdzie ρ oznacza albedo powierzchni. Więc musimy podzielić wynik przez π. Chociaż w przypadku pośredniego składnika rozproszonego nie należy zapominać, że powinniśmy podzielić wynik castRay przez PDF zmiennej losowej, który, jak pokazaliśmy wcześniej w tym rozdziale, to 1 / (2π). Dzieląc pośrednioDiffuseby przez 1 / (2π) mylnie to samo, co mnożenie tej wartości przez 2π. A ponieważ albedo jest również podzielone przez π, możemy uprościć kod ...
Masz podobną sytuację. Jeśli spojrzysz na plik PDF z próbkowaniem cosinusa, zrozumiesz, że warunki można anulować. Co nie znaczy, że nie są absolutnie konieczne. Są, po prostu się znoszą, co pozwala nieco zoptymalizować kod (i uniknąć kilku podziałów, mnożenia itp.). Jesteś tutaj bardziej w mikrooptymalizacji ... co może być mylące, jeśli spróbujesz nauczyć się teorii, patrząc tylko na zoptymalizowany kod (który często nie jest odpowiednio komentowany).
(cos(θ)...)PDF=(cos(θ)...)cos(θ)π=...