Saat ini saya mencoba menerapkan pelacak jalur Monte Carlo. Saya telah melakukan beberapa penelitian dan tampaknya pendekatan umum untuk bahan adalah dengan menggunakan model berlapis. Sesuatu seperti ini:
Ketika cahaya mengenai permukaan, Fresnel memberi tahu kita berapa banyak cahaya yang dipantulkan oleh lapisan pertama dan berapa banyak yang ke lapisan kedua, dan seterusnya.
Jadi saya melakukan sesuatu yang serupa, tetapi lebih sederhana: hanya satu lapisan specular dan satu lapisan difus. Belum ada transmisi. Sejauh ini bagus, saya menggunakan brdf sederhana berbobot kosinus untuk difus dan model mikrofaset Cook-Torrance untuk specular saya.
Sekarang sampai pada bagian yang sulit: apa yang harus saya lakukan begitu sinar menyentuh permukaan? Biasanya, saya akan memilih brdf yang sesuai dengan bahan permukaan, sampel arah cahaya kejadian, mengevaluasi brdf, dan membaginya dengan fungsi distribusi probabilitas yang tepat.
Tapi di sini, permukaan yang dihantam secara efektif berhubungan dengan banyak material. Cara naif untuk menangani ini adalah dengan mengambil sampel satu kali untuk setiap layer hit. Tapi ini jelas merupakan sumber hit kinerja yang besar, menyebabkan jalan saya menjadi pohon yang efektif.
Apakah ada solusi yang lebih baik?