| 레이 트레이싱 Ray Tracing | |
|---|---|
| 분야 | 컴퓨터 그래픽스 × 기하광학 × 수치적분 |
| 핵심 연산 | 광선-물체 교차 판정 |
| 가속 구조 | BVH, kd-트리 |
| 지배 방정식 | 렌더링 방정식(Kajiya, 1986) |
1. 개요[편집]
빛이 눈으로 들어온다. 그래서 우리는 빛을 눈에서 거꾸로 쏜다. 이 뻔뻔함이 반세기를 먹여 살렸다.
레이 트레이싱(Ray Tracing)은 카메라(눈)에서 장면 속으로 광선을 쏘고, 그 광선이 물체와 만나는 지점에서 빛의 반사·굴절·그림자를 추적하여 이미지를 생성하는 렌더링 기법이다. 빛이 광원에서 눈으로 오는 실제 물리 과정을 거꾸로, 즉 눈에서 광원 방향으로 되짚는 것이 발상의 핵심이다. 대부분의 광선은 눈에 닿지 못하고 허공으로 사라지므로, 순방향으로 다 쏘는 것은 낭비고 역추적이 압도적으로 효율적이기 때문이다.
이 방식은 컴퓨터 그래픽스의 또 다른 주류인 래스터화(rasterization)와 대비된다. 래스터화가 삼각형을 화면에 투영해 칠하는 “물체 중심” 방식이라면, 레이 트레이싱은 픽셀마다 광선을 쏘는 “픽셀 중심” 방식이다. 반사·굴절·부드러운 그림자 같은 전역 조명 효과를 자연스럽게 표현하는 대신, 값이 살벌하게 비싸다.
2. 광선-물체 교차[편집]
레이 트레이싱의 심장은 광선이 물체를 어디서 뚫는지 계산하는 교차 판정(ray-object intersection)이다. 광선은 원점 와 방향 로 매개변수화한다.
구(sphere)라면 이 식을 구 방정식에 대입해 에 대한 이차방정식을 풀면 되고, 삼각형이라면 뫼-트럼보어(Möller-Trumbore) 알고리즘으로 무게중심 좌표를 구해 판정한다. 실무 장면은 수백만 개 삼각형으로 이루어지므로, 이 교차 판정을 얼마나 빨리 하느냐가 곧 렌더링 속도다.
문제는 순진하게 하면 광선 하나당 모든 삼각형과 교차 검사를 해야 한다는 것. 픽셀 수 × 삼각형 수 × 반사 횟수를 곱하면 천문학적 연산량이 나온다. 이 지점에서 등장하는 것이 가속 구조다.
3. BVH — 공간을 접는 기술[편집]
BVH(Bounding Volume Hierarchy, 경계 볼륨 계층)는 물체들을 경계상자(bounding box)로 감싸고, 그 상자들을 다시 큰 상자로 묶는 트리 구조다. 광선을 쏠 때 먼저 큰 상자와 교차하는지 값싸게 검사하고, 뚫지 않으면 그 안의 수천 개 삼각형을 통째로 건너뛴다.
이 로그 스케일로의 강등이 레이 트레이싱을 현실로 만들었다. BVH 트리를 어떻게 잘 쌓느냐가 성능을 좌우하며, 표면적 휴리스틱(SAH, Surface Area Heuristic)으로 분할 위치를 정하는 것이 표준이다. 공간을 나누는 kd-트리와 접근이 다른데, BVH는 물체를 묶고 kd-트리는 공간을 자른다. 요즘 실시간 레이 트레이싱은 GPU에 하드웨어 BVH 순회기가 박혀 있을 만큼 이 자료구조에 몰빵한다.1
4. 렌더링 방정식과 경로 추적[편집]
빛이 한 점에서 어떻게 나가는지를 완전하게 기술하는 것이 카지야(Kajiya)가 1986년 정리한 렌더링 방정식(rendering equation)이다.
한 점에서 나가는 빛은 스스로 내는 빛()과, 반구 전방향에서 들어와 반사되는 빛의 적분의 합이라는 뜻이다. 문제는 저 적분 안의 가 또 다른 점의 렌더링 방정식이라 재귀적으로 무한히 얽힌다는 것. 이 고차원 적분을 해석적으로 푸는 건 불가능하다.
그래서 몬테카를로 방법이 구원투수로 등판한다. 적분을 무작위 표본으로 근사하는 것이다. 표면에서 광선을 확률적으로 튕겨 광원까지 이어지는 경로(path)를 잔뜩 그리고 평균 내는 방식을 경로 추적(path tracing)이라 부른다. 표본이 적으면 노이즈(입자 낀 화면)가 끼고, 표본을 늘리면 오차가 로 느릿느릿 줄어든다.2 이 “느릿느릿”이 렌더 팜을 밤새 돌리게 하는 원흉이며, 그래서 노이즈를 AI로 지워버리는 디노이저(denoiser)가 필수 파트너가 됐다.
5. 실시간의 꿈 — RTX 여담[편집]
레이 트레이싱은 1980년대부터 “오프라인 고품질 렌더링”의 대명사였다. 영화 한 프레임에 몇 시간씩 걸려도 상관없는 세계 말이다. 실시간, 즉 게임에서 프레임당 밀리초 안에 이걸 하는 건 오랫동안 공상과학이었다.
그 벽을 상업적으로 처음 깬 것이 2018년 엔비디아의 RTX 세대다. GPU에 BVH 순회와 광선-삼각형 교차를 전담하는 전용 하드웨어(RT 코어)를 박아 넣었다. 다만 여기엔 뻔한 함정이 있었으니, 실시간이라 픽셀당 광선을 몇 개밖에 못 쏘고, 그 결과 화면이 노이즈 범벅이 된다는 것. 그래서 실전의 실시간 레이 트레이싱은 사실상 “적게 쏘고 AI로 때우기”의 예술이다. 텐서 코어로 돌리는 딥러닝 디노이저와 업스케일러(DLSS)가 없으면 성립하지 않는다.3 순수 물리 시뮬레이션이 마케팅과 AI 보정으로 버무려진, 여러모로 시대를 상징하는 기술이다.
6. 어디에 쓰이나[편집]
- 영화·애니메이션: 픽사·디즈니의 오프라인 렌더러(RenderMan, Arnold)는 경로 추적 기반. 품질이 곧 밥줄.
- 게임: 반사·그림자·전역 조명을 실시간 레이 트레이싱으로. 하이브리드(래스터+RT)가 현실적 타협.
- 설계·건축 시각화: 실사에 가까운 제품·건물 렌더링. 마케팅 이미지 뽑기.
- 과학 시각화: 볼륨 렌더링 등. 빛의 물리를 그대로 시뮬레이션하는 강점.
레이 트레이싱은 결국 “빛을 물리 그대로 흉내 내면 예쁘다”는 단순한 진실을, 반세기에 걸친 가속 구조와 몬테카를로 적분으로 실현 가능하게 만든 이야기다. 그리고 마지막 한 삽은 언제나 하드웨어와 AI가 떠 준다.
7. 관련 문서[편집]
8. Footnotes[편집]
-
BVH냐 kd-트리냐는 그래픽스판 vim vs emacs 급 종교전쟁이었다. 정적 장면엔 kd-트리가 근소 우위였으나, 매 프레임 물체가 움직이는 게임에선 재구축이 빠른 BVH가 이겼다. 하드웨어 레이 트레이싱이 BVH로 표준화되면서 사실상 승부가 났다. ↩
-
오차가 표본 수의 제곱근에 반비례한다는 건 몬테카를로 방법의 숙명이다. 노이즈를 절반으로 줄이려면 표본을 네 배 쏴야 한다. 이 잔인한 수렴 속도가 경로 추적을 “인내심의 예술”로 만든다. ↩
-
그래서 게이머들 사이에선 “RTX 켜면 예쁜데 프레임이 반토막”이라는 볼멘소리와, “그거 사실 AI가 그린 그림 아니냐”는 반쯤 맞는 농담이 공존한다. 실제로 화면 대부분 픽셀은 실제 광선이 아니라 디노이저와 업스케일러의 추정치다. ↩