본문 바로가기
IT 기술/Direct3D

Direct3D 기본 형식 및 그래픽 개념 part4_12일차

by 썬's 2023. 1. 25.

안녕하세요 보글리아입니다.

매일 1일 1 포스팅하다가 설날 연휴기간 덕분에 쉬고 금일 오랜만에 글을 작성하네요 ㅎㅎ

자 그럼 오늘은 앨리어싱이라는 것을 배워 보도록 하겠습니다

※제 수업은 이전주차에서 배운 개념을 재차 설명하지 않습니다※

※이번 내용을 나가기 전 용어정리부터 하겠습니다※


용어 정의

  • 픽셀 : 하나의 이미지를 구성하고 있는 무수히 많은 정사각 형태의 입자
  • RGB : red, green, blue 세 색상의 조합으로 색을 표시하는 방식, 주로 픽셀에 색을 입힐 때 사용하는 개념
  • 후면 버퍼 : 전면 버퍼와 서로 대비되는 개념으로 다음 프레임의 전면 버퍼로서 나타날 그림을 그림
  • 깊이 버퍼 : 각 픽셀마다 깊이 정보를 다르게 주는 것을 말함
  • 해상도 : 모니터 화면 상에 픽셀이 얼마나 있는지에 대한 척도, 해상도가 높을수록 픽셀 수가 많음

1. 앨리어싱(aliasing)

Direct3D에서 컴퓨터 화면상에 이미지 하나가 있다고 가정해 보겠습니다.

이 이미지들 모두 아주 작은 픽셀들이 모여 이 픽셀 하나하나에 RGB 색상이 들어가 이미지가 만들어집니다.

하지만  픽셀은 모두 정사각 형태이기 때문에 무한히 작지는 않아 모니터 화면상에 임의의 선을 완벽하게 나타내는 것은 불가능합니다. 이때 나타나는 것이 앨리어싱이라고 합니다.

앨리어싱이란 흔히 계단 현상이라고 불리는 개념으로 모눈상에 나타나는 직선이 계단 모양이라 계단 현상이라 불립니다.

 

하단 이미지를 보시면 좌측 마우스 화살표 오른쪽 부분과 우측 손 왼쪽 하단 부분을 보시면 계단 모양이 보이실 것입니다.

이를 앨리어싱이라고 합니다. 그럼 앨리어싱은 언제 나타날까요??

바로 모니터 해상도가 낮으면 앨리어싱이 나타납니다. 그렇기에 모니터 해상도를 키워 픽셀 크기를 줄이면 이러한 계단 현상이 거의 눈에 띄지 않습니다. 여기서 중요한 점은 해상도가 아주 높다고 해서 앨리어싱 자체가 사라지는 것은 아닙니다.

이는 픽셀이 정사각 형태로 되어있기 때문입니다.

 

그러나 모니터 해상도를 키우는 것이 불가능하거나 해상도를 키워도 계단 현상이 나타나는 경우가 있습니다.

다행히 이러한 앨리어싱 즉, 계단 현상을 지우는 기법을 Direct3D에서 제공합니다.

앨리어싱

 


 

2. 초과표본화 VS 다중표본화

Direct3D에서는 앨리어싱을 제거하는 기법인 초과표본화와 다중표본화가 있습니다. 

여기서 여러분들은 초과표본화를 굳이 알 필요는 없습니다. Direct3D에서 지원하는 앨리어싱 제거 기법이 다중표본화이기 때문입니다. 일단 그전에 먼저 초과표본화를 알아보겠습니다. 

 

초과표본화란 Direct3D의 후면 버퍼와 깊이 버퍼를 모니터 해상도보다 4배 크게 잡는 기법입니다. 

이때 해상도는 가로와 세로 두 배씩 키워서 4배입니다. 순서는 다음과 같습니다.

후면 버퍼를 4배 크기의 해상도로 만들고 이를 전면 버퍼에 제시할 때, 제시하는 과정에서 후면 버퍼를 기존의 크기로 환원하는 것을 말합니다. 초과표본화는 계단 현상이 나타나는 가장 끝 픽셀에서 이 픽셀의 끝 부분을 4개의 픽셀로 나눴을 때, 다각형에 완전히 덮이지 않은 부분픽셀은 색상을 그대로 두는 것을 말합니다.

 

하단 이미지를 보시면 계단 현상이 보이고 맨 아래 픽셀의 아래쪽 부분을 부분픽셀 4개로 나뉩니다.

이 부분픽셀에서 제가 화살표로 표시한 부분픽셀은 기존 픽셀에 완전히 덮이지 않아 기존 픽셀의 색상을 따라가지 않고 흰색으로 나옵니다. 예를 들면 픽셀 색상이 녹색이면, 화살표로 표시한 부분픽셀은 다른 세 개의 부분픽셀과 다르게 기존 픽셀에 완전히 덮이지 않아 색상이 흰색으로 나오고 나머지 세 부분픽셀은 기존 픽셀의 색상인 녹색을 따라갑니다.

 

다중표본화란 초과표본화와 마찬가지로 후면 버퍼와 깊이 버퍼를 모니터 해상도보다 4배 크게 잡는 기법입니다.

단, 이미지에서 각 픽셀이 있을 때, 이 하나의 픽셀을 또 4개의 정사각 형태로 쪼갭니다. 이 쪼개진 픽셀 4개를 각각 부분픽셀이라 합니다. 이 부분픽셀에 예를 들어 3개는 빨간색, 하나는 하얀색이라 하면 네 색상의 평균을 구해 계단 현상이 완화된 좀 더 매끄러운 모습이 나타납니다.

다중표본화

 

하단 이미지에서 좌측 사진은 앨리어싱 현상, 우측 사진은 앨리어싱이 제거된 이미지입니다.

둘 다 초과표본화와 다중표본화가 적용된 방식입니다. 초과표본화라면 가장 끝 부분픽셀이 기존 픽셀에 완전히 덮이지 않아 흰색이 나오고, 다중표본화라면 가장 끝 부분픽셀의 색상의 평균을 둬 연하게 표현해 둘 다 결과적으로 계단 현상이 완화된 모습이 보입니다. 우측 사진이 계단 현상이 완화된 좀 더 매끄러운 모습인 게 보이실까요?? ㅎㅎ

그럼 초과표본화와 다중표본화를 정리하겠습니다.

앨리어싱 제거
앨리어싱 제거

초과표본화 다중표본화
후면 버퍼와 깊이 버퍼를 모니터 해상도(가로, 세로)보다 4배 크게 잡음
- 이미지 색상이 부분 픽셀로 계산되어 부분픽셀마다 색이 다를 수 있음
- 다중표본화에 비해 비용이 비싸지만, 기술적으로 조금 더 완벽함
- 이미지 색상에 부분 픽셀의 평균을 내어 하나의 색을 만듬
- 초과표본화의 비해 비용이 저렴하지만, 기술적으로는 조금 떨어짐
Direct3D에서 지원하지 않음 Direct3D에서 다중표본화 사용은
DXGI_SAMPLE_DESC 구조체 지원 이 구조체는
UINT Count, UINT Quality 멤버로 이루어짐
1. Count : 픽셀당 추출할 표본 개수, 즉 부분픽셀을 말함
2. Quality : 원하는 품질 수준(이는 하드웨어 제조사마다 요구하는 값이 다름)

여기서 표본 개수가 많고 품질 수준이 높을 수록 비용 증가

 


오늘은 Direct3D에서 이미지에 나타나는 앨리어싱 현상과 이를 제거하는 기법인 초과표본화와 다중표본화 기법에 대해 배워 봤습니다.

그럼 다음시간에는 기능 수준에 대해 배우고 기본 형식과 그래픽 개념을 마무리하는 시간을 가져 보도록 하겠습니다.

긴 글 읽으시느라 너무 고생 많으셨습니다~~

댓글