렌더 파이프 라인에서 Vertex Shader 단계의 마지막에, 지정된 좌표를 받아들이고 이 범위에서 벗어난 모든 좌표는 자르게된다. 이때, Clip 된 좌표들은 모두 폐기되고, 남은 좌표들은 최종적으로 파편화되어 화면에 보이게 되고 눈에 보이는 모든 좌표들이 -1.0과 1.0 범위 안에 지정하는 것은 직관적이지 않기 때문에, 우리가 원하는 화면에 표현하기 위한 공간으로 다시 변환하게 된다. 이때 사용되는 것이 NDC(Noramlize Device Coordinate)이며, 이 공간은 투영(Projection) 행렬에 정의된다.
앞서 유도한 투영 행렬이 정의하는 Viewing Box는 절두체(Frustrum)라고 불린다. 이 절두체 내부에 있는 좌표들은 화면에 나타나게 된다. 지정한 범위 내에서 NDC로 변환하는 전체적인 과정을 '투영한다'라고 한다. 3D좌표를 2D에 매핑하기 쉬운 NDC로 투영하기 때문이다.
정규좌표(Normalized Device Coodinate)
정규 좌표(NDC)는 1을 기준으로 하는 2차원 좌표다. 이 좌표계의 원점은 화면(Device)의 정 중앙에 위치하며, 화면의 우상단 좌표가 (1.0, 1.0), 좌하단 좌표가(-1.0, -1.0)이 된다.
정규 좌표를 사용하면 해상도에 따른 화면좌표 계산이 단순화 된다. x좌표를 계산할 때 계산하는 과정을 줄일 수 있으며, 해상도를 제외한 값을 계산해 두면 해상도가 변할 경우에도 쉽게 실제 화면 좌표를 계산할 수 있게 된다.
즉, 화면 해상도 차이에 빠르게 적응하기 위한 하나의 도구다.
https://lalyns.tistory.com/entry/NDCClip-Space%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
'그래픽스 > 공통' 카테고리의 다른 글
레스터화기 단계 Rasterization (0) | 2024.05.02 |
---|---|
드로우콜 (Draw Call) (0) | 2024.01.22 |
배칭 (Batching) (0) | 2024.01.22 |
병목 (Bottleneck) (0) | 2024.01.21 |
곡선 (Curve) & 스플라인 (Spline) (0) | 2024.01.21 |