Monte Carlo 적분을 수행할 때 Importance Sampling 을 이용해 해를 좀 더 효율적으로 구할 수 있다. 쉽게 설명하면 주어진 domain 에서 근사 적분을 수행해야 할때, 최대한 적은 샘플링으로 근사값을 구하기 위해 샘플값이 큰 부분을 더 높은 빈도로 샘플링하는 것이다. 결과적으로 Uniform sampling 보다 빠르게 원래의 적분값에 수렴하게 된다.
BRDF 모델이 복잡할 수록 정확한 Importance sampling 함수를 찾기가 어렵지만, Phong 등의 간단한 모델을 사용한다면 비교적 간단하게 구할 수 있다. 여기서는 Phong 모델의 Importance Sampling 방법만 설명하겠다.
Cosine Weighted Sampling
미소 입체각 에 대한 Cosine weighted PDF (Probability Density Function)
를 구해보자.
PDF 의 정의에 의해,
에 대한 Marginal Density Function
를 구해보자.
정해진 의
에 대한 Conditional Density Function
를 구해보자.
이제 와
를 각각 적분해서 1D CDF (Cumulative Distribution Function) 를 만든다.
이제 각각의 역함수를 구한다.
Cartesian 좌표계로 나타내면,
결론적으로 uniform 랜덤 변수인 로,
로 가중되어 분산된 랜덤 방향 벡터를 구할 수 있게 됐다.
Power Cosine Weighted Sampling
아까와 비슷한 방식으로 Power cosine weighted PDF 를 구해보자.
PDF 의 정의에 의해,
치환된 T 를 풀면,
에 대한 Marginal Density Function
를 구해보자.
정해진 의
에 대한 Conditional Density Function
를 구해보자.
이제 와
를 각각 적분해서 1D CDF (Cumulative Distribution Function) 를 만든다.
치환된 T 를 풀면,
이제 각각의 역함수를 구한다.
Cartesian 좌표계로 나타내면,
결론적으로 uniform 랜덤 변수인 로,
로 가중되어 분산된 랜덤 방향 벡터를 구할 수 있게 됐다.
Importance Sampling for Phong Model
지금까지의 식들을 조합해서 Phong 모델의 Monte Carlo 적분시 Importance Sampling 에 필요한 PDF 와 샘플링 함수를 구할 수 있다.
Phong 라이팅 모델에 대한 BRDF 식은,
렌더링 적분식에는 가 곱해지므로,
여기서 빛이 표면에 부딪혀 반사될 때 Lambert 산란 확률을 , Specular 반사 확률을
라고 할 수 있다.
random 값 에 의해
이면 Cosine weighted sampling 을
이면 Power cosine weighted sampling 을 수행하면 된다.
단, Cosine weighted sampling 에서 는
과
사이의 각도이고, Power cosine weighted sampling 에서
는
과
사이의 각도를 말한다. 즉, 반구면에 대한 Monte Carlo 적분을 수행할때 Lambert diffuse 적분식의 up 방향 벡터는
이지만, Phong specular 적분식은
를 up 방향 벡터로 하면 된다. 실제로 랜덤 샘플링할 때 적절히 up 방향의 로컬 축으로 변환해야 할 것이다.
Cosined weighted PDF 를 , Power cosine weighted PDF 를
라고 하면,
는,
References
- Physically Based Rendering
http://www.pbrt.org - Advanced Global Illumination
http://www.advancedglobalillumination.com
importance sampling에 대한 문제를 여쭤보고싶은데 답변주실수있나용??