정의
정규화된 장치 좌표(NDC, Normalized Device Coordinate)는 그래픽스 렌더링 파이프라인에서 3D 공간의 정점들이 최종적으로 변환되어 위치하게 되는 표준화된 좌표계이다.
즉, 2D 화면에 투영되기 직전의 좌표계라고 할 수 있다.
특징
| 축 | 범위 | 의미 |
|---|
| x | -1 ~ +1 | 왼쪽 ~ 오른쪽 |
| y | -1 ~ +1 | 아래 ~ 위 |
| z | 0 ~ 1 (DirectX) -1 ~ 1 (OpenGL) | 근평면(Near) ~ 원평면(Far) |
모든 좌표는 이 공간 안에 들어와야 화면에 보이게 된다.
변환 흐름
- 모델 좌표 (Model Space)
-> 물체의 로컬 좌표
- 월드 좌표 (World Space)
-> 물체가 World에 있는 절대 좌표
- 뷰 좌표 (View Space, 카메라 공간)
-> 카메라를 중심으로 본 좌표
- 클립 좌표 (Clip Space)
-> 투영 행렬을 거쳐 나온 결과, 정규화가 안되어 있는 좌표
- NDC 좌표 (Normalized Device Coordinates)
-> 클립 좌표를 정규화한 좌표
- 스크린 좌표 (Screen Space)
-> 뷰포트 변환 후 실제 픽셀 위치
클립 좌표 -> NDC
클립 좌표는 다음과 같은 4차원 벡터로 계산된다.
pclip=Mproj⋅Mview⋅Mmodel⋅plocal
이제 NDC로 만들기 위해 W 분할(perspective divide)을 수행한다.
pndc=(wclipxclip,wclipyclip,wclipzclip)
즉, 클립 좌표의 각 요소를 w로 나눠서 NDC로 변환한다.
이 과정은 원근 투영을 하기 위해 필요하다.