<aside>
<img src="/icons/list_gray.svg" alt="/icons/list_gray.svg" width="40px" />
목차
</aside>
Ray marching
개념

- 레이 마칭(Ray Marching)은 3차원 물체를 렌더링하는 기법 중 하나로, 픽셀마다 가상의 광선(Ray)을 발사하여 물체에 닿을 때까지 점진적으로 진행시키며 해당 픽셀의 색상을 결정하는 방식입니다
원리
기본 개념
- 광선을 반복적으로 통과 시켜 각 광선을 더 작은 광선 세그먼트로 효과적으로 나누고, 각 단계에서 특정 함수를 샘플링합니다.
- 광선 시작점 설정: 카메라 위치에서 시작
- 방향 벡터 계산: 픽셀 좌표로부터 광선 방향 결정
- 반복 행진:
- 현재 위치에서 SDF 계산
- SDF 값만큼 광선 이동
- 충돌 또는 최대 거리까지 반복
상세 과정
레이 마칭(Ray Marching)

-
Ray Origin 정의
- 레이의 출발 지점(Ray Origin, RO)은 카메라의 3D 공간 위치로 정의합니다.
-
Screen UV 정의
- XY 평면에 화면 좌표(Screen UV)를 정의합니다.
-
Ray Direction 정의
- 이 화면 좌표에 깊이(Z축 좌표)를 추가하여 3D 공간의 화면 좌표를 생성합니다.
- 카메라(RO)에서 각 화면 좌표를 향하는 방향 벡터(Ray Direction, RD)를 정의합니다.
<aside>
<img src="/icons/dialogue_blue.svg" alt="/icons/dialogue_blue.svg" width="40px" />
레이 마칭 연산
- 레이 마칭은 대개 **Pixel Shader(Rendering Pipeline )**에서 계산됩니다.
- 이는 물체의 표면을 이루는 모든 픽셀마다 병렬적으로 한 번씩 실행된다는 의미입니다.
- 즉, RD(Ray Direction)는 각 픽셀 쉐이더마다 개별적으로 계산됩니다.
- 예를 들어, 물체의 표면을 이루는 픽셀이
200 x 100 = 20000개라면 20000개의 RD가 존재하게 됩니다.
- 또한 스크린 전체(렌더 타겟)에서 레이 마칭을 계산할 경우, 화면 해상도만큼의 RD가 존재하게 됩니다.
</aside>