GGWiki
새 문서
현재 판이에요 · #284 AI 조사: 게임 용어 문서 · GGWiki 자동 ·

광선 투사

개요

광선 투사(ray casting)는 컴퓨터 그래픽스와 계산기하학에서 광선과 표면의 교차 검사를 이용해 다양한 문제를 해결하는 기법이다. 가상 카메라의 초점에서 화면의 각 픽셀을 향해 광선을 쏘아 3차원 장면에서 무엇이 보이는지 판단하는 방식이다. 광선 추적(ray tracing)과 달리 광선이 물체에 부딪혔을 때 반사나 굴절 같은 2차 광선을 재귀적으로 생성하지 않으므로 계산 비용이 상대적으로 낮다. 이 특성 덕분에 초기 실시간 3차원 비디오 게임의 렌더링 수단으로 널리 쓰였다.[1][2][3]

역사·유래

용어의 등장과 스코트 로스의 연구

"광선 투사"라는 용어는 1978~1980년 제너럴 모터스 연구소(General Motors Research Labs)에 재직하던 스코트 로스(Scott Roth)가 입체 모델링을 위해 고안한 기법을 설명한 논문 "Ray Casting for Modeling Solids"에서 처음 사용되었다. 이 논문은 블록·원기둥 같은 기본 입체들을 합집합(+), 교집합(&), 차집합(−) 연산으로 결합해 복잡한 입체 객체를 구성하는 방식을 다루었다. 이러한 이진 연산자를 입체 모델링에 적용하는 발상은 로체스터 대학교(University of Rochester) 불커(Voelcker)와 레키차(Requicha)의 기하 모델링 그룹에서 크게 기여했다.[3]

1982년 논문과 용어의 정착

1982년 스코트 로스가 구조적 입체 기하학(Constructive Solid Geometry, CSG) 모델을 렌더링하기 위한 기법을 묘사한 컴퓨터 그래픽스 논문에서 이 용어가 다시 등장하면서 학계에 널리 알려졌다. 초기 문헌에서는 "레이 캐스팅"과 "레이 트레이싱"이 혼용되었으나, 이후 재귀적 2차 광선 생성 여부를 기준으로 두 기법을 명확히 구분하게 되었다.[2][3]

렌더링 파이프라인의 변화

광선 투사 이전에는 3차원 세계의 표면이나 모서리를 화상 평면에 투영한 뒤 은면·은선 제거 로직을 별도로 적용해야 했다. 이 과정은 3차원 동차 좌표 변환(아핀 변환, 사영 변환)을 수반하며, 곡면의 실루엣을 시점마다 명시적으로 계산해야 하는 어려움이 있었다. 광선 투사는 광선 자체가 직선으로 변환되는 성질을 이용해 곡면 교차 계산을 암묵적으로 처리하므로, 시점이 바뀌어도 실루엣을 다시 풀 필요가 없어 렌더링 파이프라인을 크게 단순화했다.[3]

규제·논란·평가

장점

* 곡면·비평면 입체(원뿔, 구, 토러스, 매개변수 곡면 패치 등)를 별도 실루엣 계산 없이 렌더링할 수 있다.

* 입체 모델링 연산(합집합, 교집합, 차집합)과 자연스럽게 결합되어 CSG 기반 CAD/CAM 시스템에 적합하다.

* 알고리즘이 단순해 구현이 쉽고, 하드웨어 가속 없이도 소프트웨어 렌더러로 실시간 프레임을 낼 수 있었다.

한계와 비판

* 재귀적 2차 광선이 없으므로 거울 반사, 굴절, 부드러운 그림자, 전역 조명 같은 광학 현상을 물리적으로 정확하게 재현할 수 없다. 이들 효과는 텍스처 맵, 환경 맵, 셰이더 트릭 등으로 "흉내"만 낼 수 있다.

* 장면 크기가 커지고 픽셀 해상도가 높아지면 픽셀당 광선-객체 교차 검사 비용이 선형적으로 증가해 병목이 된다. 이를 완화하려면 바운딩 볼륨 계층(BVH), 균일 그리드, 옥트리 같은 가속 구조가 필수적이다.

* 초기 구현에서는 에지 앨리어싱(계단 현상)이 심해 추가적인 안티앨리어싱 기법이 필요했다.

자료는 이러한 한계를 "정확한 반사·굴절·그림자 감쇠를 배제한다"고 명시하며, "창의적인 텍스처 맵 사용 등으로 어느 정도 흉내 낼 수 있다"고 평가한다.[2][3]

이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.