Bạn luôn cần nhân với số hạng cosin thực sự (đó là một phần của phương trình kết xuất). Mặc dù khi bạn khuếch tán gián tiếp bằng cách sử dụng phương pháp dò tia và do đó tích hợp monte-carol (đây là kỹ thuật phổ biến nhất trong trường hợp này), bạn phải chia sự đóng góp của từng mẫu cho PDF của mình . Điều này cũng được kiểm tra ở đây .
Cũng lưu ý rằng trong tài liệu tham khảo được đề cập, nếu PDF có các thuật ngữ mà bạn cũng tìm thấy trong các phương trình kết xuất thì bạn có thể tối ưu hóa mã nếu bạn muốn bằng cách hủy bỏ các điều khoản này.
Đừng quên rằng BRDF của một bề mặt khuếch tán là ρ / π trong đó ρ là viết tắt của suất phản chiếu bề mặt. Vì vậy, chúng ta cần chia kết quả cho π. Mặc dù trong trường hợp thành phần khuếch tán gián tiếp, đừng quên rằng chúng ta nên chia kết quả của castRay cho PDF của biến ngẫu nhiên, như chúng ta đã thấy trước đó trong chương này là 1 / (2π). Chia gián tiếpDiffuswise 1 / (2π) mis giống như nhân giá trị này với 2π. Và vì albedo cũng được chia cho π, chúng ta có thể đơn giản hóa mã ...
Bạn có một tình huống tương tự. Nếu bạn xem PDF để lấy mẫu cosine, thì bạn sẽ nhận ra rằng các điều khoản có thể bị hủy bỏ. Điều đó không có nghĩa là chúng 'không' thực sự cần thiết. Họ là, họ chỉ hủy bỏ nhau cho phép tối ưu hóa mã một chút (và tránh một vài phân chia, nhân, vv). Bạn có nhiều hơn trong việc tối ưu hóa vi mô ở đây ... có thể gây nhầm lẫn nếu bạn cố gắng học lý thuyết bằng cách chỉ nhìn vào mã được tối ưu hóa (thường không được nhận xét đúng).
( C o s ( θ ) . . . )PD F= ( C o s ( θ ) . . . )c o s ( θ )π= . . .