[DX] 정규화된 장치 좌표(NDC, Normalized Device Coordinate)

김진우·2025년 7월 10일

DirectX

목록 보기
18/32
post-thumbnail

정의

정규화된 장치 좌표(NDC, Normalized Device Coordinate)는 그래픽스 렌더링 파이프라인에서 3D 공간의 정점들이 최종적으로 변환되어 위치하게 되는 표준화된 좌표계이다.

즉, 2D 화면에 투영되기 직전의 좌표계라고 할 수 있다.

특징

범위의미
x-1 ~ +1왼쪽 ~ 오른쪽
y-1 ~ +1아래 ~ 위
z0 ~ 1 (DirectX)
-1 ~ 1 (OpenGL)
근평면(Near) ~ 원평면(Far)

모든 좌표는 이 공간 안에 들어와야 화면에 보이게 된다.

변환 흐름

  1. 모델 좌표 (Model Space)
    -> 물체의 로컬 좌표
  2. 월드 좌표 (World Space)
    -> 물체가 World에 있는 절대 좌표
  3. 뷰 좌표 (View Space, 카메라 공간)
    -> 카메라를 중심으로 본 좌표
  4. 클립 좌표 (Clip Space)
    -> 투영 행렬을 거쳐 나온 결과, 정규화가 안되어 있는 좌표
  5. NDC 좌표 (Normalized Device Coordinates)
    -> 클립 좌표를 정규화한 좌표
  6. 스크린 좌표 (Screen Space)
    -> 뷰포트 변환 후 실제 픽셀 위치

클립 좌표 -> NDC

클립 좌표는 다음과 같은 4차원 벡터로 계산된다.

pclip=MprojMviewMmodelplocal\mathbf{p}_{clip} = M_{proj} \cdot M_{view} \cdot M_{model} \cdot \mathbf{p}_{local}

이제 NDC로 만들기 위해 W 분할(perspective divide)을 수행한다.

pndc=(xclipwclip,yclipwclip,zclipwclip)\mathbf{p}_{ndc} = \left( \frac{x_{clip}}{w_{clip}}, \frac{y_{clip}}{w_{clip}}, \frac{z_{clip}}{w_{clip}} \right)

즉, 클립 좌표의 각 요소를 w로 나눠서 NDC로 변환한다.

이 과정은 원근 투영을 하기 위해 필요하다.

0개의 댓글