Game/Computer Graphics

Scan Conversion

카세우스 2026. 8. 27. 18:17

Ref : https://www.docsity.com/en/scan-conversion-introduction-to-computer-graphics-lecture-slides/313686/

Scan Conversion의 정의는 삼각형의 Vertex별 속성을 보간하여 각 픽셀 위치에 할당하는 것을 의미하는데, 그냥 쉽게 말해서 아날로그 형태의 어떤 도형을 픽셀로 그려내는 과정이라고 생각하면 편할 것이다. 대충 뷰 포트 내부의 삼각형을 생각해보면, 정점 별 속성을 보간할때 X/Y좌표가 사용된다. (z좌표는 스크린 공간에서의 깊이가 된다.)

 

이때 정점별 속성은 삼각형의 변을 따라서 선형 보간(Linearly Interpolate)된다. 이를 위해서는 각 변마다 기울기를 계산해야만 한다. 이 과정은 생각보다 어렵지는 않으므로 생략하도록 하고, 특이적으로 스캔 변환 단계에서 선형 보간은 변을 따라서, 그 다음에는 스캔 라인을 따라서 수행됨을 기억해 두도록 하자. (이를 bilinear interpolation, 겹선형 변환이라고 한다.)

 

 

 

Ref : https://userpages.cs.umbc.edu/rheingan/435/pages/res/gen-4.Scan-single-page-0.html

근데 문제는 두 삼각형이 공유하는 변 위에 픽셀이 위치한다면, 둘중에 어느 삼각형이 픽셀을 소유하는지 결정해야 할 필요가 있다. 그렇지 않으면 픽셀은 두번 처리되서 머리가 아플 것이고, 이는 그래픽스 API 내부에서 이뤄진다.

 

직관적으로 말하자면, 삼각형의 변은 오른쪽/왼쪽/위쪽/아래쪽으로 구분될 수 있다. 예를 들어서, 어떤 삼각형은 두개의 왼쪽 변과 한 개의 오른쪽 변을 가질 수도 있을 것이다. 이때 한 픽셀이 어떤 삼각형의 위쪽 혹은 왼쪽 변에 놓이게 되면, 이 픽셀은 그 삼각형의 소유라고 판정하게 된다. 이를 Top-left 규칙이라고 한다. DirectX와 OpenGL이 조금 다르긴 하지만, 둘다 Top-left 규칙을 따라가서 Scan conversion을 하게 된다.