레이 캐스팅(Ray casting, 광선 투사)는 3차원 공간을 그래픽으로 구현하기 위한 기법 중의 하나다. 위키백과 한국어판의 레이 캐스팅에 대한 정의는 다음과 같다.
광선 투사(Ray casting)는 컴퓨터 그래픽스와 계산기하학의 다양한 문제를 해결하기 위해 광선과 표면의 교차검사를 사용하는 기법을 말한다. 이 용어는 1982년 스코트 로스의 구조적 입체 기하학 모델을 렌더링하기 위한 기법을 묘사하는 컴퓨터 그래픽스 논문에서 처음 사용되었다.
광선 투사 기법은 다양한 문제와 다양한 기법과 관련이 있다:
- 광선에 처음으로 교차되는 물체를 가려내는 일반적인 문제,
- 카메라로부터 이미지의 각 픽셀을 향한 광선 교차 검사를 통한 은면 제거(hidden surface removal),
- 기본적인 광선들만을 검사하는 비재귀적 광선 추적(ray tracing) 렌더링 알고리즘, 혹은
- 볼륨 레이 캐스팅이라 불리는 직접적 볼륨 렌더링 기법이 있다.
이 기법은 광선이 물체에 직접적으로 관통해 물체 내부를 샘플링한 3D 스칼라장으로 뚫고 들어간다. 이 기법에서 광선은 반사되지 않는다.
"레이 캐스팅" 혹은 "레이 트레이싱"이라는 단어는 과거 그래픽스 문헌에서 구분없이 사용되었으나, 최근에는 이 둘을 구분해서 사용한다. 레이 캐스팅 기법에서는, 광선이 재귀적으로 반사되어 제 2의 광선을 만들지 않는다. 그러나 레이 트레이싱은 광선이 계속적으로 반사되면서 렌더링 결과물에 영향을 끼친다.
레이 캐스팅은 적은 연산만으로도 3차원처럼 보이는 공간을 구현할 수 있는, semi-3D 기술이다. 하지만 장면의 반사나 그림자 효과를 지원하는 레이 트레이싱(Ray tracing)과 비교했을 때, 재현력이 다소 떨어진다.
Ray-casting | Ray-tracing | |
---|---|---|
광선을 그룹으로서 형상화/추적 | 각각의 광선은 분리되어 있어서, 각각의 점들(일반적으로 픽셀)은 하나의 단일 광선으로 추적 | |
320*200 크기의 해상도 | 단 320개의 광선만 추적 | 64,000개의 광선을 추적 |
렌더링 속도 | 매우 빠름 | 매우 느림 |
기타 | 실시간 렌더링 가능 | 극사실적인 결과물 |
(표 출처: "Raycasting of Raytracing?" - Raycasting Basics with Javascript by Gustavo Pezzi)