빠른 흐름
camera ray
-> hit surface
-> sample material/light direction
-> bounce
-> accumulate contribution
-> denoise| 개념 | 의미 |
|---|---|
| Sample | 가능한 빛 경로 중 하나를 뽑은 결과 |
| Bounce | ray가 표면에서 반사되거나 굴절되는 단계 |
| Monte Carlo | 확률 샘플 평균으로 적분을 근사 |
| Accumulation | 여러 sample/frame 결과를 누적 |
| Denoising | 부족한 샘플의 noise를 줄이는 후처리 |
구조
path tracing은 장면의 조명을 정해진 공식 한 번으로 계산하지 않습니다. 카메라에서 ray를 쏘고, 표면에 닿으면 재질과 빛 분포에 따라 다음 방향을 샘플링합니다. 이 경로가 빛에 도달하거나 종료될 때까지 기여도를 누적합니다.
pixel color ~= average(samples)sample 수가 많을수록 실제 조명 적분에 가까워지지만 비용이 커집니다. sample이 적으면 결과에 noise가 생기고, glossy 반사, caustics, 작은 light source처럼 맞추기 어려운 경로일수록 noise가 심합니다.
importance sampling은 중요한 방향을 더 자주 뽑기 위한 방법입니다. 예를 들어 밝은 light나 BRDF가 강하게 반사하는 방향을 우선 샘플링하면 같은 sample 수로 더 안정적인 결과를 얻을 수 있습니다.
Denoising
실시간 path tracing은 충분한 sample을 한 프레임 안에 모으기 어렵습니다. 그래서 이전 프레임과 현재 프레임을 누적하고, depth, normal, albedo, motion vector 같은 보조 정보를 사용해 denoising합니다.
품질 기준
| 증상 | 먼저 볼 것 |
|---|---|
| 반짝이는 noise | sample 수, light sampling |
| 움직일 때 잔상 | temporal accumulation, motion vector |
| 디테일이 뭉개짐 | denoiser strength, normal/albedo guide |
| 어두운 영역이 지저분함 | indirect sample, clamp 정책 |
| 작은 빛이 잘 안 잡힘 | next event estimation, importance sampling |
path tracing 품질은 ray tracing 지원 여부만으로 결정되지 않습니다. sampling 전략과 denoising 품질이 실제 화면 안정성을 크게 좌우합니다.
주의할 점
denoising은 없는 정보를 마법처럼 복원하지 않습니다. sample이 너무 적거나 guide buffer가 부정확하면 noise 대신 blur, ghosting, 얼룩이 생길 수 있습니다.
또 path tracing은 물리적으로 자연스러운 결과를 만들 수 있지만, material model, light sampling, exposure, tone mapping이 맞지 않으면 여전히 부자연스럽게 보입니다.