ขณะนี้ฉันกำลังพยายามใช้ตัวติดตามเส้นทาง Monte Carlo ฉันได้ทำการวิจัยมาแล้วและดูเหมือนว่าวิธีการทั่วไปสำหรับวัสดุคือการใช้แบบจำลองแบบเลเยอร์ บางสิ่งเช่นนี้
เมื่อแสงกระทบกับพื้นผิว Fresnel จะบอกเราว่าแสงนั้นสะท้อนออกมาในชั้นแรกมากแค่ไหนและไปที่ชั้นที่สองเท่าใด
ดังนั้นฉันจึงทำสิ่งที่คล้ายกัน แต่ง่ายกว่า: เพียงชั้นเดียวของ specular และชั้นหนึ่งของการกระจาย ยังไม่มีการส่งผ่าน จนถึงตอนนี้ฉันใช้brdf ที่มีน้ำหนักแบบโคไซน์เพื่อการกระจายของฉันและแบบจำลองขนาดเล็กของ Cook-Torrance สำหรับ specular ของฉัน
ตอนนี้ส่วนที่ยากมา: ฉันควรทำอย่างไรเมื่อรังสีกระทบพื้นผิว? โดยปกติฉันจะเลือก brdf ที่สอดคล้องกับวัสดุพื้นผิวตัวอย่างทิศทางแสงตกกระทบประเมิน brdf และหารด้วยฟังก์ชันการแจกแจงความน่าจะเป็นที่ถูกต้อง
แต่ที่นี่การตีพื้นผิวนั้นสอดคล้องกับวัสดุหลากหลาย วิธีที่ไร้เดียงสาในการจัดการสิ่งนี้คือการสุ่มตัวอย่างหนึ่งครั้งสำหรับการโจมตีแต่ละเลเยอร์ แต่สิ่งนี้ชัดเจนว่าเป็นแหล่งที่มาของการแสดงที่ยิ่งใหญ่ทำให้เส้นทางของฉันกลายเป็นต้นไม้ได้อย่างมีประสิทธิภาพ
มีวิธีแก้ปัญหาที่ดีกว่านี้ไหม?