비타Cpp

다중 표본화의 이론 본문

DirectX12/메모

다중 표본화의 이론

멍C 2021. 7. 18. 18:28

모니터의 픽셀들이 무한히 작지는 않기 때문에,  모니터에 임의의 선을 완벽하게 표현할 수는 없다. 흔히 '계단현상'이라고 하는 앨리어싱(Aliasing) 효과가 아래의 그림이다.

 

선을 픽셀들의 배열로 '근사'하다 보면 이런 현상이 생긴다. 삼각형의 변에서도 이와 비슷한 앨리어싱 효과가 나타난다.

 

이러한 계단현상을 바로잡을 수 있는 기법이 안티앨리어싱(Anti-Aliasing)기법이다. 이러한 기법의 하나가 초과 표본화(Supersampling)이다. 초과 표본화에서는 후면 버퍼와 깊이 버퍼를 화면 해상도보다 4배(가로, 세로 두 배씩) 크게 잡고, 3차원 장면을 4배 크기의 해상도에서 후면 버퍼에 렌더링 한다. 이미지를 화면에 제시할 때가 되면 후면 버퍼를 원래 크기의 버퍼로 환원(Resolving)한다. 하향 표본화(Downsampling)이라고 부르는 이 환원 공정은 4픽셀 블록의 네 색상의 평균을 그 블록에 해당하는 픽셀의 최종 색상으로 사용한다. 본질적으로, 초과 표본화는 화면 해상도를 소프트웨어에서 증가하는 것이라 할 수 있다.

 

초과 표본화는 픽셀 처리량과 메모리 소비량이 네 배라서 비용이 높다.  Direct3D는 다중표본화(Multisampling)라는 절충적인 앨리어싱 제거 기법을 지원한다. 다중 표본화는 일부 계산 결과를 부분 픽셀(subpixel)들 사이에서 공유하기 때문에 초과 표본 효과보다 비용이 낮다.

 

초과표본화(Supersampling)은 4개의 서브픽셀의 평균값을 필터링 하므로 많은 비용이 든다.

 

Supersampling과 Multisampling의 픽셀 계산의 차이점을 보여준다. Supersampling은 각 서브 픽셀을 전부 계산하는데에 비해 Multisampling은 공유된 서브픽셀을 계산하므로써 계산량을 줄인다.

 

 

'DirectX12 > 메모' 카테고리의 다른 글

상주성(Residency)  (0) 2021.07.26
기능 지원 점검(CheckFeatureSupport)  (0) 2021.07.26
Resource & Descriptor(자원과 서술자)  (0) 2021.07.18
깊이 버퍼링(Depth Buffer)  (0) 2021.07.09
SwapChain 과 페이지 전환  (0) 2021.07.09
Comments