핵심 정리
| 개념 | 의미 |
|---|---|
| Ray | 시작점과 방향을 가진 광선 |
| Intersection | 광선과 삼각형/구/표면의 교차 |
| Primary ray | 카메라에서 화면 샘플로 나가는 광선 |
| Shadow ray | 표면에서 빛까지 가려졌는지 확인하는 광선 |
| Acceleration structure | BVH처럼 교차 후보를 줄이는 구조 |
| Path tracing | 여러 bounce를 확률적으로 추적하는 방식 |
구조
레이 트레이싱은 화면의 각 샘플에 대해 광선을 만들고, 장면과의 가장 가까운 교차점을 찾은 뒤, 그 지점의 재질과 빛을 계산합니다. 반사나 굴절이 있으면 새 광선을 이어서 쏩니다.
camera ray
-> closest hit
-> material evaluation
-> shadow/reflection/refraction rays
-> accumulated colorrasterization은 삼각형을 화면으로 투영해 fragment를 만들지만, ray tracing은 광선이 장면과 어디서 만나는지 찾습니다. 그래서 반사, 그림자, 간접광 같은 가시성 문제를 더 직접적으로 표현할 수 있습니다.
가속 구조
모든 ray를 모든 triangle과 비교하면 비용이 너무 큽니다. BVH 같은 acceleration structure는 장면을 계층적으로 나눠 교차할 가능성이 없는 영역을 빠르게 건너뜁니다.
선택 기준
| 목표 | 방식 |
|---|---|
| 거울 반사, 정확한 hard shadow | ray tracing 후보 |
| 전역 조명과 부드러운 간접광 | path tracing, GI |
| 실시간 기본 visibility | rasterization이 여전히 강함 |
| 잡음 없는 고품질 이미지 | 샘플 수와 denoising 필요 |
| 성능과 품질 절충 | hybrid rendering |
실시간 렌더링에서는 rasterization으로 기본 이미지를 만들고, 일부 효과만 ray tracing으로 보강하는 hybrid 방식이 흔합니다.
주의할 점
Ray tracing은 교차 테스트와 메모리 접근이 많아 acceleration structure 품질과 업데이트 비용이 중요합니다. 움직이는 물체가 많으면 BVH build/refit 비용도 병목이 될 수 있습니다.
Path tracing은 샘플 수가 부족하면 noise가 생깁니다. 실시간에서는 temporal accumulation과 denoising 없이는 안정적인 결과를 얻기 어렵습니다.
또 ray tracing이 모든 문제를 자동으로 해결하지는 않습니다. 재질 모델, light sampling, importance sampling, denoising 품질이 함께 맞아야 자연스러운 결과가 나옵니다.
참고 링크
1 sources