멀티샘플 안티에일리어싱

**멀티샘플 안티에일리어싱**(Multisample anti-aliasing, **MSAA**)은 공간 안티에일리어싱의 일종으로, 컴퓨터 그래픽스에서 에일리어싱을 제거하는 데 사용되는 기술이다.

이것은 슈퍼샘플링의 최적화이며, 필요한 부분만 더 많이 샘플링한다. 에일리어싱은 작은 영역에서만 감지되므로 해당 영역을 빠르게 찾아 해당 부분만 안티에일리어싱한다.

## 정의
이 용어는 일반적으로 슈퍼샘플링의 특수 사례를 나타낸다. 전체 장면 안티에일리어싱(FSAA)의 초기 구현은 단순히 장면을 더 높은 해상도로 렌더링한 다음 더 낮은 해상도 출력으로 다운샘플링하는 방식으로 개념적으로 작동했다. 대부분의 최신 GPU는 이러한 형태의 안티에일리어싱이 가능하지만, 텍스처, 대역폭, 필레이트와 같은 리소스에 큰 부담을 준다. (프로그램이 TCL 바운드 또는 CPU 바운드인 경우, 성능 저하 없이 슈퍼샘플링을 사용할 수 있다.)

OpenGL GL_ARB_multisample 사양에 따르면, "멀티샘플링"은 슈퍼샘플링의 특정 최적화를 의미한다. 이 사양은 렌더러가 픽셀당 한 번 프래그먼트 프로그램을 평가하고 깊이 및 스텐실 버퍼 값만 "실제로" 슈퍼샘플링하도록 규정한다. (이것은 슈퍼샘플링과 다르지만, OpenGL 1.5 사양에 따르면, 이 정의는 전체 슈퍼샘플링 구현을 포함하도록 업데이트되었다.)

일반적인 그래픽 문헌에서 "멀티샘플링"은 최종 이미지의 일부 구성 요소가 완전히 슈퍼샘플링되지 않는 슈퍼샘플링의 특수 사례를 나타낸다. 아래 목록은 특히 ARB_multisample 정의를 참조한다.

## 설명
슈퍼샘플 안티에일리어싱에서는 모든 픽셀 내에서 여러 위치가 샘플링되며, 각 샘플이 완전히 렌더링되고 다른 샘플과 결합되어 궁극적으로 표시되는 픽셀을 생성한다. 전체 렌더링 프로세스가 각 샘플 위치에 대해 반복되어야 하므로 계산 비용이 많이 든다. 또한 에일리어싱은 일반적으로 가장자리와 같이 이미지의 일부에서만 감지되는 반면, 슈퍼샘플링은 모든 단일 픽셀에 대해 수행되므로 비효율적이다.

멀티샘플 안티에일리어싱에서 픽셀 내의 여러 샘플 위치 중 하나라도 렌더링되는 삼각형에 의해 덮이는 경우, 해당 삼각형에 대한 셰이딩 계산이 수행되어야 한다. 그러나 이 계산은 얼마나 많은 샘플 위치가 덮이든 상관없이 전체 픽셀에 대해 한 번만 수행하면 된다. 셰이딩 계산 결과는 단순히 모든 관련 멀티샘플 위치에 적용된다.

픽셀 내의 모든 멀티샘플 위치를 하나의 삼각형만 덮는 경우, 셰이딩 계산은 한 번만 수행되며 이러한 픽셀은 비-안티에일리어싱 이미지보다 비용이 거의 들지 않으며 결과도 다르지 않다. 이는 에일리어싱이 문제가 되지 않는 삼각형의 중간 부분에 해당한다. (윤곽선 검출은 MSAA 계산을 여러 삼각형 또는 여러 깊이의 삼각형을 포함하는 픽셀로 명시적으로 제한하여 이를 더욱 줄일 수 있다.) 각 멀티샘플 위치가 다른 삼각형으로 덮이는 극단적인 경우, 각 위치에 대해 다른 셰이딩 계산이 수행된 다음 결과가 결합되어 최종 픽셀이 생성되며, 결과와 계산 비용은 동등한 슈퍼샘플링 이미지와 동일하다.

셰이딩 계산만이 주어진 픽셀에서 수행되어야 하는 유일한 작업은 아니다. 멀티샘플링 구현은 가시성과 같은 다른 작업을 다양한 샘플링 수준에서 다양하게 샘플링할 수 있다.

## 장점
* 픽셀 셰이더는 일반적으로 하나 이상의 샘플 포인트를 덮는 모든 삼각형에 대해 픽셀당 한 번만 평가하면 된다.
* 폴리곤의 가장자리(3D 그래픽에서 가장 명확한 에일리어싱 원인)가 안티에일리어싱된다.
* 픽셀당 여러 서브픽셀이 샘플링되므로, MSAA 없이 놓칠 수 있었던 1픽셀보다 작은 폴리곤 디테일도 충분한 샘플을 취하면 최종 렌더링된 이미지의 일부로 캡처될 수 있다.

## 단점

### 알파 테스트
알파 테스트는 프레임버퍼에 픽셀이 기록되는 것을 거부하여 반투명 객체를 렌더링하는 데 사용되는 오래된 비디오 게임에 흔한 기술이다.
반투명 프래그먼트(픽셀)의 알파 값이 지정된 임계값보다 낮으면 버려진다. 이는 픽셀 단위로 수행되므로, 이 픽셀에 대해 이미지는 멀티샘플링의 이점을 받지 못한다(알파 테스트에 따라 픽셀의 모든 멀티샘플이 버려진다). 결과 이미지는 투명 객체의 가장자리 또는 텍스처 내의 가장자리를 따라 에일리어싱을 포함할 수 있지만, 이미지 품질은 어떤 안티에일리어싱도 없이 얻을 수 있는 것보다 나쁘지 않을 것이다.
알파 테스트 텍스처를 사용하여 모델링된 반투명 객체도 알파 테스트로 인해 에일리어싱된다. 이 효과는 투명 텍스처를 가진 객체를 여러 번 렌더링하여 최소화할 수 있지만, 이는 많은 투명 객체를 포함하는 장면에 대해 높은 성능 저하를 초래할 것이다.

### 에일리어싱
멀티샘플링은 내부 폴리곤 프래그먼트를 픽셀당 한 번만 계산하므로, 프래그먼트 셰이더 출력이 고주파수 구성 요소를 포함하는 렌더링된 폴리곤 내부에서 에일리어싱 및 기타 아티팩트가 여전히 나타날 수 있다.

### 성능
SSAA(슈퍼샘플링)보다 성능 집약적이지는 않지만, 특정 시나리오(복잡한 프래그먼트가 많은 장면)에서는 MSAA가 FXAA, SMAA 및 MLAA와 같은 후처리 안티에일리어싱 기술보다 주어진 프레임에 대해 몇 배 더 집약적일 수 있다. 이 범주의 초기 기술은 성능에 미치는 영향이 적은 경향이 있지만, 정확도 문제가 있었다. 이전에 렌더링된 프레임의 데이터를 결합하여 에일리어싱을 줄이는 시간 안티에일리어싱(TAA)과 같은 최근의 후처리 기반 안티에일리어싱 기술은 이러한 추세의 역전을 보여주었으며, 후처리 AA는 MSAA보다 다용도적이고 비싸졌다. MSAA는 프레임 전체를 단독으로 안티에일리어싱할 수 없다.

## 샘플링 방법

### 포인트 샘플링
포인트 샘플링된 마스크에서 각 멀티샘플의 커버리지 비트는 멀티샘플이 렌더링된 프리미티브 내부에 위치할 경우에만 설정된다. 샘플은 렌더링된 프리미티브 외부에서 결코 취해지지 않으므로, 포인트 샘플링을 사용하여 생성된 이미지는 기하학적으로 정확하지만, 픽셀의 커버리지 마스크에 설정된 비트의 비율이 해당 프래그먼트에 의해 실제로 덮인 픽셀의 비율과 같지 않을 수 있으므로 필터링 품질이 낮을 수 있다.

### 영역 샘플링
영역 샘플링된 마스크를 사용하면 필터링 품질을 향상시킬 수 있다. 이 방법에서 픽셀에 대한 커버리지 마스크에 설정된 비트 수는 프래그먼트의 실제 영역 커버리지에 비례해야 한다. 이로 인해 렌더링된 프리미티브 내부에 실제로 위치하지 않는 멀티샘플에 대해 일부 커버리지 비트가 설정될 수 있으며, 에일리어싱 및 기타 아티팩트가 발생할 수 있다.

## 샘플 패턴

### 정규 그리드
멀티샘플 위치가 픽셀 전체에 걸쳐 균일한 간격의 그리드를 형성하는 정규 그리드 샘플 패턴은 구현하기 쉽고 속성 평가(즉, 서브픽셀 마스크 설정, 색상 및 깊이 샘플링)를 단순화한다. 이 방법은 샘플 수가 많기 때문에 계산 비용이 많이 든다. 화면 정렬 가장자리에 대한 가장자리 최적화는 좋지 않지만, 멀티샘플 수가 많을 때 이미지 품질이 좋다.

### 희소 정규 그리드
희소 정규 그리드 샘플 패턴은 정규 그리드 샘플 패턴에서 선택된 샘플의 부분집합이다. 정규 그리드와 마찬가지로, 정규 간격으로 인해 속성 평가가 단순화된다. 샘플 수가 적기 때문에 계산 비용이 적게 든다. 화면 정렬 가장자리에 대한 가장자리 최적화는 좋으며, 적당한 수의 멀티샘플에 대한 이미지 품질이 좋다.

### 확률적 샘플 패턴
확률적 샘플 패턴은 픽셀 전체에 걸친 멀티샘플의 무작위 분포이다. 샘플의 불규칙한 간격으로 인해 속성 평가가 복잡해진다. 이 방법은 낮은 샘플 수(정규 그리드 패턴과 비교하여)로 인해 비용 효율적이다. 이 방법으로 가장자리 최적화는 화면 정렬 가장자리에 대해 차선이다. 적당한 수의 샘플에 대한 이미지 품질이 우수하다.

## 품질
슈퍼샘플링과 비교하여 멀티샘플 안티에일리어싱은 더 높은 성능에서 유사한 품질을 제공하거나 동일한 성능에서 더 나은 품질을 제공할 수 있다. 회전된 그리드 서브픽셀 마스크를 사용하면 더욱 향상된 결과를 얻을 수 있다. 멀티샘플링에 필요한 추가 대역폭은 Z 및 색상 압축이 가능한 경우 합리적으로 낮다.

대부분의 최신 GPU는 2×, 4×, 8× MSAA 샘플을 지원한다. 값이 높을수록 품질은 좋지만 속도는 느려진다.

## 같이 보기
* 알파 투 커버리지
* 모폴로지컬 안티에일리어싱

## 각주

분류:영상 처리