Şu anda Monte Carlo yol izleyicisini uygulamaya çalışıyorum. Biraz araştırma yaptım ve malzemelere ortak bir yaklaşım katmanlı bir model kullanmak gibi görünüyor. Bunun gibi bir şey:
Işık yüzeye çarptığında, Fresnel bize bu ışığın ne kadarının birinci tabaka tarafından yansıtıldığını ve ikincisine ne kadar gittiğini söyler.
Bu yüzden benzer ama daha basit bir şey yaptım: sadece bir speküler katman ve bir difüz katman. Henüz geçirgenlik yok. Şimdiye kadar iyi, diffüzüm için basit bir kosinüs ağırlıklı brdf ve spekülerim için Cook-Torrance mikrofaceted modelini kullanıyorum.
Şimdi zor kısım geliyor: Bir ışın yüzeye çarptığında ne yapmalıyım? Normalde, yüzey malzemesine karşılık gelen brdf'yi seçer, bir ışık yönünü örnekler, brdf'yi değerlendirir ve doğru olasılık dağılım işlevine bölerdim.
Ancak burada, bir yüzey vuruşu etkili bir şekilde birden fazla malzemeye karşılık gelir. Bunu idare etmenin naif yolu, isabet alan her katman için bir kez numune almak olacaktır. Ama bu açıkça, yolumun etkili bir şekilde ağaç haline gelmesine neden olan büyük bir performans vuruşunun kaynağı.
Daha iyi bir çözüm var mı?