레이트레이싱이란?
그래픽스에서의 레이트레이싱에 대해 아주 간단히 알아보자.
목차
세 줄 요약
- 렌더링 방법 중 하나 (렌더링 = 씬으로부터 영상(이미지) 생성)
- 광선이 물체에서 반사되어 카메라에 들어오는 과정(물리적인 움직임)을 역으로 시뮬레이션
- 반사, 굴절, 그림자를 정확하게 재현할 수 있어 사실적인 이미지를 생성할 수 있음
정의
In 3D computer graphics, ray tracing is a technique for modeling light transport for use in a wide variety of rendering algorithms for generating digital images.
- 출처: 위키백과
3D 컴퓨터 그래픽에서 레이트레이싱은 디지털 이미지 생성을 위한 다양한 렌더링 알고리즘에 사용하기 위해 빛 전달을 모델링하는 기술이다.
레이트레이싱은 정확히 어떤 알고리즘을 가리키는 것이 아니고, Path tracing이나 Photon mapping같은 여러 갈래가 있다.
Rasterization 대비 장단점
Rasterization도 렌더링 방법 중 하나이다. 주로 게임 등 실시간 그래픽에 쓰인다.
Rasterization은 실제 빛의 물리적 움직임을 시뮬레이션하기보다는, 대충 비슷하게 보이는 꼼수(공학적 기법)에 더 가깝다
레이트레이싱은 비교적 사실적이지만 연산이 무거워 시간의 영향을 많이 받는 탓에 주로 오프라인 렌더링(영화 등)에 쓰인다.
장점
- 기본적으로 비교적 사실적이다
- 그림자 구현이 쉽다
- 임의의 곡면에 대한 반사 및 굴절 구현이 가능하다
단점
- GPU를 잘 활용하기 어렵다
- 연산이 비교적 무겁다
기본 알고리즘
실제로 우리 눈에 물체가 보이는 원리는, 광원에서 나온 빛이 물체에 반사되어 눈에 들어오는 것이다.
레이트레이싱은 이 과정을 역으로 시뮬레이션한다.
즉, 카메라(눈)에서 광선을 쏴서, 어떤 물체에 부딛히는지 확인하고,
그 부분에 광원에서 나오는 빛이 부딛히는지 확인해 색상을 결정한다.
모든 픽셀마다 광선을 발사해서, 광선이 닿는 물체에 따라 해당 픽셀의 색을 결정한다.
레이캐스팅과의 차이
레이캐스팅이나 레이트레이싱이나 대충 비슷한데, 보통 레이캐스팅은 빛 반사를 여러번 처리하지 않는다는 정도의 차이가 있다.