2026. 8. 19. 19:16ㆍGame/Computer Graphics

스크린에 그려질 삼각형이 대충 결정되면, 픽셀 마다 Fragment가 생성된다. 그리고 이걸 (위에 사진처럼) 픽셀에다 때려 박는 과정이 필요한데 - 이 모든 과정을 통틀어 래스터화라고 부른다.
래스터화는 Clipping, Perspective dicision, Back-free Culling, View-port Transform등의 요소로 구성된다. 그리고 래스터화의 경우에는 하드웨어로 고정된 단계로 프로그래밍이 불가능하다. (Not Programmable, Not Configurable이 아님에 유의하자.)
클리핑
클리핑은 2x2x1 크기의 뷰 볼륨 바깥에 놓인 폴리곤을 썽강썽갈 잘라내는 작업을 말한다. 이는 알고리즘으로 구현되어 있고, 딱히 사용자는 수정하지 못한다. 꼬우면 젠슨 황이나 리사수에게 가서 따지시라.
원근 나눗셈

대충 왼쪽의 뷰 프리스텀을 때려 지지고 볶은 뷰 볼륨이 있다고 치자. 그럼 어떤 정점의 동차좌표를 카테시안 좌표로 전환하기 위해서는 각 정점을 그 자신의 w좌표로 나누면 된다. 근데 w좌표는 양수이며, 카메라 공간의 xy평면으로 부터 해당 정점 까지의 수직 거리이다. 쉽게 말해 원근법이 적용 되는 셈이니, w로 나누는 연산을 Perspective Division(원근 나눗셈)이라고 하며 이 결과를 정규화된 장치 좌표(Normalized Device Coordniates, NDC)라고 한다. 여튼 원근 나눗셈은 NDC를 구하려 함에 목적이 있음을 알아두면 좋을 것이다.
컬링
카메라에 보이지 않는 부분을 제거하는 작업을 총칭하며, 특히 뒷면 컬링(back-face culling)은 카메라에 등을 돌리고 있는 폴리곤을 제거하는 작업을 말한다.

참고로 앞면인지, 뒷면인지는 삼각형의 노멀을 사용해서 결정할 수 있다. 대충 카메라 벡터랑 내적을 때리면 된다. 이때 뒷면이면 시계방향으로 정렬되고 det가 -로 나온다.

근데 뒷면 제거는 카메라 공간에서 수행되지 않는데, 사유는 각 삼각형 마다 연결벡터를 계산해야 되는 노가다를 해야되기 때문이다. 그래서 "이론상 모두가 평등해진" 투영 변환 이후에 이를 계산하게 된다.
뷰포트 변환
어찌되었던 컴퓨터 스크린 상의 윈도우는 스크린 공간을 가진다. 웃긴건 x축은 오른쪽, y축은 아래, Z축은 스크린 내부로 향한다. 또한 스크린 공간은 오른손 좌표계를 사용한다. 그리고 이러한 스크린 공간에 Viewport가 정의되게 된다.

NDC로 표현된 클립공간이 왼손 좌표계임으로, 오른손 좌표계로 바꾼 다음에 Viewport의 파라미터에 맞게 축소/확대하고 이동하면 최종적으로 스크린 공간으로 옮겨지게 된다.
스캔 변환

픽셀을 채울 시간이다! 그러니까, 개별 삼각형이 차지하는 스크린 공간의 픽셀 위치를 결정하고 - 정점별 속성을 보간해서 각 픽셀 위치에 할당할 시간이다.
그리고 이건 다음 포스팅에....
'Game > Computer Graphics' 카테고리의 다른 글
| [CG] Vertex-Processing(1) (0) | 2026.07.22 |
|---|---|
| [CG] 폴리곤 메쉬 표현 기법 (0) | 2025.07.01 |