Наразі я намагаюся реалізувати трасування шляху Монте-Карло. Я провів кілька досліджень і, здається, загальним підходом до матеріалів є використання шаруватої моделі. Щось на зразок цього:
Коли світло потрапляє на поверхню, Френель повідомляє нам, яка частина світла відбивається на першому шарі і скільки йде на другий тощо.
Тому я зробив щось подібне, але простіше: лише один шар дзеркального та один шар дифузного. Передачі ще немає. До сих пір я використовую простий косинковий Brdf для мого дифузного, а мікрографову модель Кука-Торранса - для мого окуляра.
Тепер настає важка частина: що мені робити, коли промінь потрапляє на поверхню? Як правило, я б обрав brdf, що відповідає матеріалу поверхні, відібрав напрямок падаючого світла, оцінив brdf та розділив на правильну функцію розподілу ймовірностей.
Але тут поверхневий удар ефективно відповідає безлічі матеріалів. Наївним способом впоратися з цим було б пробування одного разу для кожного потрапляння шару. Але це, очевидно, є джерелом величезного хіта на продуктивність, що спричинило мій шлях до ефективного перетворення на дерево.
Чи є краще рішення?