현재 Monte Carlo 경로 추적기를 구현하려고합니다. 몇 가지 연구를 수행했으며 재료에 대한 일반적인 접근 방식은 레이어 모델을 사용하는 것 같습니다. 이 같은:
빛이 표면에 닿으면 Fresnel은 첫 번째 레이어에서 반사되는 빛의 양과 두 번째 레이어로가는 빛의 양 등을 알려줍니다.
그래서 나는 비슷하지만 더 간단한 것을했습니다 : 단 하나의 거울과 단 하나의 확산 층. 아직 투과율이 없습니다. 지금까지는 확산에 간단한 코사인 가중치 brdf 를 사용하고 스펙 큘러에는 Cook-Torrance 미세면 처리 모델을 사용합니다.
이제 어려운 부분이 생깁니다. 광선이 표면에 닿으면 어떻게해야합니까? 일반적으로 표면 재료에 해당하는 brdf를 선택하고, 입사광 방향을 샘플링하고, brdf를 평가하고, 올바른 확률 분포 함수로 나눕니다.
그러나 여기서 표면 타격은 효과적으로 여러 재료에 해당합니다. 이것을 처리하는 순진한 방법은 각 레이어 적중마다 한 번 샘플링하는 것입니다. 그러나 이것은 분명히 성능에 큰 영향을 미쳐 내 길을 효과적으로 나무로 만듭니다.
더 나은 해결책이 있습니까?
1
재료 층을 '몬테카를로'할 수 없습니까? 예를 들어, 반사율에 따라 각 레이어에 가중치를 부여하고이를 기반으로 임의로 하나를 선택하십시오. 더 깊은 층은 그 위에있는 모든 층의 흡수의 합에 기초하여 약간의 감쇠가 필요합니다.
—
PaulHK
PaulHK 이것이 바로 경로 추적기, 계층 간 각 인터페이스에 대한 러시아어 룰렛에서 수행하는 작업이므로 분기가 전혀 없습니다. 불행히도 구현이 아직 완료되지 않았으므로 실제 성능에 대한 정보가 없습니다. Andrea Weidlich와 Alexander Wilkie의 논문 "임의 레이어 마이크로 페이스 표면"을 기반으로 구현 한 결과를 기반으로했습니다. 아주 좋은 결과를 생성하고 구현하기가 훨씬 간단합니다.
—
Christian Pagot