Path Tracing 을 구현할 때 필요한 기본적인 수식을 정리해 보겠습니다.
미소 표면 에서
방향으로 발산하는 radiance
는 다음과 같이 쓸 수 있습니다.
(1)
는 표면이 발광하는 물체일때 직접적으로 발산하는 radiance 고,
은 모든 방향에서 들어오는
가 BRDF 에 의해서 반사되는 radiance 를 나타냅니다. 식으로 풀어쓰면,
(2)
위의 식만으로 Path Tracer 를 구현하자면 광원에 닿을 때 까지 재귀적으로 적분을 수행해야 합니다. 실제로는 Monte Carlo 적분을 하게 되는데 tracing depth 는 제한이 있으므로, 광원의 크기가 작을 수록 적분의 수렴률은 떨어지게 됩니다. 이것은 극심한 noise 의 원인이 됩니다. 예를 들어 무한히 작은 점광원일 경우, 점에 도달할 확률은 0% 에 가까우므로 해를 구하는 것은 불가능에 가깝습니다. 하지만 식을 변형하면 solid angle 에 대한 적분을 광원의 면적에 대한 적분으로 빼낼 수 있습니다.
우선 는 또 다른 임의의 미소 표면
에서 반사되어 나오는 것이므로
로 바꿔쓸 수 있습니다.
(3)
이제 식 (1) 을 (3) 에 대입하면,
여기서 는
에서
가 보이는지에 대한
or
의 가시성 함수 입니다.
결과적으로 항에 의해 광원에 대한 직접적인 라이팅 계산을 할 수 있게 되었습니다.
항은 여전히 재귀함수이지만 함수안에 직접 라이팅 항을 가지므로 좀 더 빠르게 해에 수렴하게 됩니다. (이것을 next event estimation 이라고 부릅니다)
여기서 한가지 주의할 점이 있습니다. 광원 방향의 적분은 이미 에 포함되기 때문에
를 구할 때는 중복되므로 제외시켜야 하는 것이 맞습니다.



참고:
Advanced Global Illumination (A K Peters)