티스토리 뷰

DirectX12/Direct3D

다중표본화의 이론.

코닥쿠 2023. 6. 4. 00:38
반응형

모니터의 픽셀들이 무한히 작지는 않기 때문에, 모니터 화면에 임의의 선을 완벽하게 나타내는 것은 불가능하다. 아래그림은 흔히 '계단현상'이라고 하는 앨리어싱 효과를 보여준다. 선을 픽셀들의 배열로 '근사'하다보면 이런 현상이 생긴다. 삼각형의 변에서도 이와 비슷한 앨리어싱 효과가 나타난다. 모니터 해상도를 키워서 픽셀 크기를 줄이면 문제가 크게 관화되어서 이 계단 현상이 거의 눈에 띄지 않을 정도가 된다. 그러나 모니터 해상도를 키우는 것이 불가능하거나 키워도 충분하지않은 경우에는 앨리어싱 제거( antialiasing ) 기법을 적용할 수 있다. 그런 기법의 하나가 초과표본화 ( supersampling ) 이다. 초과표본화에서는 후면 버퍼라 깊이 버퍼를 화면 해상도보다 4배 ( 가로 , 세로 두배씩 ) 크게 잡고, 3차원 장면을 4배 크기의 해상도에서 후면 버퍼에 렌더링한다. 이미지를 화면에 제시할 때가 되면 후면 버퍼를 원래 크기의 버퍼로 환원 ( resolving ) 한다 . 하향표본화 ( downsampling ) 라고도 부르는 이 환원 공정은 4픽셀 블록의 네 색상의 평균을 그 블록에 해당하는 픽실의 최종 색상으로 사용한다. 본질적으로, 초과표본화는 화면 해상도를 소프트웨어에서 증가하는 것이라 할 수 있다. 초과표본화는 픽셀 처리량과 메모리 소비량이 네 배라며 비용이 높다. Direct3D은 다중 표본화 ( multisampling ) 라는 절충적인 앨리어싱 제거 기법을 지원한다. 다증표본화는 일부 계산 결과를 부분픽셀 ( subpixel ) 들 사이에서 공유하기 때문에 초과표본화보다 비용히 낮다. 4x 대중표본화 ( 픽셀당 부분픽셀 4 개 )의 경우 다중표본화도 초과표본화처럼 크기가 화면 해상도의 4배인 후면 버퍼와 깊이 버퍼를 사용한다. 그러나 다중표본화는 이미지 색상을 각 부분 픽셀마다 계산하는 것이 아니라 픽셀당 한 번만 계산하고 ( 픽셀의 중심에서 ), 그 색상과 부분픽셀들의 가시성 ( 이를 위해 부분필셀당 깊이-스텐실 판정이 일어남 )과 포괄도( 부분 픽셀울 다각형이 어느 정도나 덮고 있는지를 뜻하는 값 )를 이용해서 최종 색상을 결정한다. 아래그림에 나와있다.

 

위쪽 선에는 앨리어싱 ( 선을 픽셀돌의 행렬로 표현하려고 할 때 나타나는 계단 현상 ) 이 보인다. 아래쪽은 앨리어싱이 제거된 모습으로, 한 픽셀의 최종 색상을 그 이웃 픽셀돌의 색상들을 추출에서 결정하는 앨리어싱 제거 기법을 적용한 것이다. 이에 의해 계단 현상이 완화된, 좀 더 매끄러운 모습이다.

 

 

위에 그림은 다각형의 한 변에 걸친 픽셀의 처리 방식, (a) 픽셀 중심에서 평가된 검은색는 다각형에 덮인 세 개의 가시적 부분픽셀들에 저장된다. 제 4사분면에있는 부분픽셀은 다각형에 완전히 덮이지 않았으므로 검은색으로 갱선되지 않는다.  그냥 이전에 그린기하구조에서 계산된 색상이나 Clear연산에 의한 색상을 유지한다. (b) 관련된 픽셀 색상을 계산하기 위해, 네개의 부분픽셀 ( 검은색 세개, 흰색하나 ) 의 평균을 낸다. 이에 의해 다각형 변에 하나의 밝은 검은색(회색) 픽셀이 만들어 지며, 결과적으로 다각형의 변이 좀 더 매끄러운( 계단 현상이 완화된 ) 모습이 된다.

 

☆ 참고 : 초과표본화와 다중표본화의 핵심적인 차이를 잘 파악하기 바란다. 초과표본화에서는 이미지 색상이 부분픽셀별로 계산되므로 한 픽셀의 부분픽셀들의 색이 각자 다를 수 있다. 반면 다중표본화 위에 그림에서처럼 이미지 색상이 픽셀당 한 번만 계산되며, 그 색상이 다각형에 덮인 모든 가시 분분픽셀에 복제된다. 이미지를 색상을 계산하는 것을 그래픽 파이프라인에서 가장 비싼단계 중 하나이기 때문에, 다중표본화는 초과표본화보다 비용이 상당히 낮다. 대신, 초과표본화는 좀 더 정확한 결과를 낸다.

 

 

위의 그림을 보면 하나의 픽셀이 균등한 격자 패턴에 따라 네개의 부분 픽셀로 분할되어 있다. 그러나 실제로 쓰이는 패턴 ( 부분 픽셀들의 배치되는 지점들) 은 하드웨어 제조사마다 다를수 있다. Direct3D 자체에는 부분픽셀의 배치 방식이 구체적으로 정의되어 있지 않다. 서로 다른 분할 패턴들은 각자 장단점을 가지고있다.

반응형

'DirectX12 > Direct3D' 카테고리의 다른 글

DXGI(DirectX Graphics Infrastructure).  (0) 2023.08.19
Direct3D의 다중표본화과 기능 수준.  (0) 2023.06.06
자원과 서술자.  (0) 2023.05.27
깊이 버퍼링(Depth Buffering).  (0) 2023.05.25
교환 사슬과 페이지 전환.  (0) 2023.05.20
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함