광선 추적(레이 트레이싱, ray tracing)은 3차원 컴퓨터 그래픽스에서 디지털 이미지를 생성하기 위해 광선 전달(light transport)을 모델링하는 렌더링 기술이다. 이 기법은 빛이 실제로 물체와 상호작용하는 방식을 시뮬레이션하여 반사, 굴절, 그림자, 산란 등의 광학 효과를 사실적으로 구현한다.
정의와 원리
광선 추적은 가상의 카메라(시점)에서 화면의 각 픽셀을 향해 광선을 발사하고, 이 광선이 장면 내 물체와 교차하는 지점을 계산하여 해당 픽셀의 색상을 결정하는 방식으로 작동한다. 실제 세계에서는 광원에서 빛이 방출되어 관찰자의 눈에 도달하지만, 광선 추적에서는 계산 효율을 위해 눈에서 광원 방향으로 경로를 역추적하는 방식을 사용한다.
알고리즘 종류
광선 추적 기반 렌더링 기술에는 여러 단계의 알고리즘이 존재한다. 비재귀적 방식인 광선 투사(ray casting)는 각 픽셀에서 가장 가까운 표면만을 결정하는 가장 단순한 형태이다. 재귀적 광선 추적(recursive ray tracing)은 광선이 표면에 부딪힐 때 반사, 굴절, 그림자 광선을 추가로 생성하여 반사와 굴절 효과를 처리한다. 그 외에도 분산 광선 추적(distributed ray tracing), 광자 매핑(photon mapping), 경로 추적(path tracing) 등이 있으며, 경로 추적은 렌더링 방정식(rendering equation)을 평가하는 알고리즘으로 더 높은 물리적 충실도를 제공한다.
역사
광선 추적의 개념은 16세기 알브레히트 뒤러(Albrecht Dürer)가 3차원 장면을 이미지 평면에 투사하는 기법을 설명하면서 처음 제시된 것으로 알려져 있다. 컴퓨터를 이용한 광선 추적은 1968년 아서 아펠(Arthur Appel)이 처음 시도했으며, 1971년에는 MAGI사의 골드슈타인과 나겔이 광선 추적을 이용한 입체 음영 그림을 제작했다. 1979년 터너 위티드(Turner Whitted)는 거울 반사와 굴절을 포함한 재귀적 광선 추적 알고리즘을 발표하여 이후 광선 추적 연구의 기초를 마련했다.
응용 분야
광선 추적은 초기에 영화 및 텔레비전 시각 효과(VFX), 정지 컴퓨터 생성 이미지와 같이 렌더링 시간이 상대적으로 길어도 허용되는 분야에 주로 사용되었다. 경로 추적을 사용하여 완전히 렌더링된 초기 장편 영화에는 《몬스터 하우스》, 《하늘에서 음식이 내린다면》(2009), 《몬스터 대학교》(2013) 등이 포함된다. 광선 추적은 또한 음파를 광파와 유사하게 추적하여 사실적인 잔향과 메아리를 구현하는 데에도 사용될 수 있다.
실시간 광선 추적
래스터화(rasterization)에 비해 계산량이 많아 실시간 응용 분야인 비디오 게임에는 오랫동안 적합하지 않다고 여겨졌다. 그러나 2018년 엔비디아(NVIDIA)가 튜링(Turing) 아키텍처 기반의 지포스 RTX 그래픽 카드에서 하드웨어 가속 광선 추적을 지원하는 "RT 코어"를 도입하면서 상황이 변화했다. 마이크로소프트의 DirectX Raytracing(DXR), Vulkan RT, Metal RT 등의 그래픽 API가 개발되어 게임 개발자들이 하이브리드 광선 추적 및 래스터화 기반 렌더링을 사용할 수 있게 되었다. 이후 AMD, 인텔을 비롯한 여러 하드웨어 제조사와 플레이스테이션 5, 엑스박스 시리즈 X/S 등 차세대 게임 콘솔에서도 하드웨어 가속 광선 추적이 도입되었다. 모바일 분야에서도 2022년 이후 삼성 엑시노스, 퀄컴 스냅드래곤, Arm 등이 하드웨어 가속 광선 추적 지원을 발표했으며, 애플은 2023년 A17 프로 칩과 M3 프로세서 제품군에 이 기능을 도입했다.
광선 추적이 구현하는 광학 효과
광선 추적은 반사, 굴절, 부드러운 그림자, 빛 산란, 피사계 심도(depth of field), 모션 블러, 코스틱(caustics), 앰비언트 어클루전(ambient occlusion), 색수차 등의 광학 현상을 시뮬레이션할 수 있다. 이러한 효과들은 다른 렌더링 기법에서는 별도로 근사 계산해야 하지만, 광선 추적에서는 물리적 광선 전달 과정의 자연스러운 결과로 나타난다.
계산 복잡도와 성능
광선 추적의 주요 단점은 높은 계산 비용이다. 각 광선은 장면 내 모든 객체와의 교차 여부를 테스트해야 하므로, 일반적으로 광선 교차 계산 시간은 객체 수와 화면 픽셀 수에 의존한다. 이를 개선하기 위해 바운딩 볼륨 계층 구조(BVH), 공간 분할 등의 가속 구조가 사용된다. 각 광선의 계산적 독립성 덕분에 광선 추적은 병렬화에 적합하다는 장점이 있다. 한편, 특정 조건에서 광선 추적 문제의 결정 버전은 결정 불가능(undecidable)하다는 것이 학술적으로 증명된 바 있다.