|
Anti-Aliasing 컨트롤 확장
앞서는 DirectX 10.1에서는 새로운 쉐이더 버전 적용에 따른 연산 및 리소스
증대, 큐브 맵 배열을 통한 쉐이더 및 텍스처 처리 능력 개선 따른 성능 향상부분과 더불어 FP32 필터링을 비롯한
16bit 정수연산의 파이프라인 성능 개선 부분에 따른 내용들을 살펴보았다.
이번 장에서는 안티앨리어싱 (Anti-Aliasing)
컨트롤 부분에서 DirectX 10.1은 기존의 DirectX 10과 비교하여 어떻게 달라졌는지를 살펴보고자 한다.

안티앨리어싱은 화면에 보여지는 물체의 계단 현상을 줄여주는 기능으로 이 안티앨리어싱을 적용하게 되면 이미지의 품질은
향상되지만, 성능이 저하되는 것으로 알려지고 있다. 최근 등장하는 하이엔드나 메인스트림급의 그래픽 카드들은 성능이 증가하고
있어 어느 정도의 안티앨리어싱을 적용하고도 일정 수준의 성능을 내주고 있지만, 아직까지도 최상의 옵션을 적용하기에는 무리가
따른다. 이는 그래픽 카드의 연산 능력 등의 성능이 증가하면서 어느 정도 개선이 되어가고 있지만, 여전히 안티앨리어싱은
성능 저하의 주범이 되고 있다.
DirectX 10에서는 기존의 DirectX 9에서처럼 안티앨리어싱을 적용하는 것은 하드웨어에 따라 달라지고 있으며,
AMD나 NVIDIA에서 멀티샘플링 또는 슈퍼샘플링 안티앨리어싱의 방법을 통해 성능 저하를 최소화하기 위한 노력들이 수반되어 왔다.
DirectX 10.1에서는 이 안티앨리어싱 컨트롤에서 기존의 DirectX 10과는 다르게 강제적인 스펙이 정해지게
된다. 바로 픽셀 당 최소 4샘플 (32bit와 64bit 픽셀 포맷 지원) 즉, 4x 안티앨리어싱을 적용하는 것으로 멀티샘플링 (Multi-Sampling)과
슈퍼샘플링 (Super-Sampling) 안티앨리어싱을 모두 컨트롤하고 프로그래밍하게 된다. 특히, DirectX
10.1에서는 멀티샘플링 안티앨리어싱에 중점을 두게 된다.


이번 DirectX 10.1에서는 앞서 언급하였듯이 픽셀 당 최소 4 샘플 즉, 4x
MSAA (Multi-Sampled) 안티앨리어싱을 적용하게 되며, 저가형부터 고급형 모델 모두에 강제 적용하게 된다.
이렇게 된다면, 기존에도 그랬듯이 저가형의 제품들은 성능이 낮기 때문에 안티앨리어싱 적용에 따른 성능 저하가 더 크게
부각될 수 밖에 없는 문제도 있다.
이 방법에는 Pixel Coverage Mask 기법을 사용하는데 Mask는 픽셀 지역의
샘플링을 빠르게 접근할 수 있게 해주는 것으로 화면의 모션 블러 효과나 파티클, 수목 표현 등을 빠르고 품질을 향상시킬 수
있도록 해주며, 성능 저하를 최소화할 수 있도록 만들어주게 된다. Pixel Coverage Mask 기법은 픽셀 쉐이더를
통한 안티앨리어싱 프로그래밍을 가능하게 해준다. 이를 통해 HDR 렌더링 과정 등에서도 품질과 성능을 개선시킬 수 있게
된다.
이런 안티앨리어싱 컨트롤을 통해 개발자들에게는 이전보다 더 넓고 효과적인 컨트롤을
가능하게 해주고 현재보다 쉽게 독립적인 안티앨리어싱 컨트롤이 가능해지게 되어 개발자들 입장에서는 더 나은 프로그래밍 환경을
제공해주게 된다. 더불어 멀티 GPU 안티앨리어싱에서의 이미지 품질 향상을 얻을 수 있게 된다. 사용자들 입장에서는 더
뛰어난 효과들을 다양한 게임들에서 경험해볼 수 있게 된다.
멀티샘플링 안티앨리어싱은 안티앨리어싱의 한 기법으로 픽셀 내부의 멀티샘플을 그래픽
하드웨어의 파이프라인에 직접 추가하여 성능 향상을 꾀한다. 이 방법은 균일하지 못한 샘플 패턴의 품질을 향상시킬 수 있다.
그러나, 메모리 대역폭을 더 필요로 하고 프로그래밍 가능한 쉐이더에 각각의 샘플을 적용하게 되므로 이의 연산에 따른 성능
저하를 가져오게 된다.
슈퍼샘플링은 몇 몇 샘플을 픽셀 내부에 즉시 넣고 평균 컬러 값을 측정한다. 이
기법에서는 한번 출력될 때보다 고해상도에서 렌더링이 이루어지며, 사이즈를 줄여 다운샘플링하여 여분의 픽셀을 계산한다.
이렇게 하면 픽셀의 라인 하나는 부드럽게 변하나 물체의 다른 부분은 각을 가지게 된다. 그러나, 슈퍼샘플링은 비디오 카드
메모리와 메모리 대역폭을 많이 차지하며, 버퍼 사용량이 증가된다. 처음에는 픽셀 내부에 몇 몇 샘플이 생성된다. 값이
유사하면 이 샘플들은 컬러로 결정되어 사용되며, 그렇지 않을 경우 더 많은 샘플을 생성한다. 이 기법은 필요로 하는 수의
샘플이 계산되어 낭비가 적으므로 성능을 향상시킬 수 있다. 슈퍼샘플링은 멀티샘플링보다 품질은 높지만, 부하가 더 많이
발생하게 된다.
AMD의 안티앨리어싱 기법
AMD의 경우 얼마 있으면 등장할 새로운 그래픽 카드에서 DirectX 10.1을
지원하는 만큼 앞서 소개한 기법들이 적극적으로 사용되어질 것으로 보여진다.
MSAA의 경우 폴리곤 가장 자리에만 적용이 가능하며, 텍스처 앨리어싱이나 쉐이더
앨리어싱은 어려운데 AMD는 ATI Radeon HD 2000 시리즈에 Custom Filter AA (CFAA)를
도입하여 필터들에 세련된 프로그래밍이 가능하게 되며, 최근 Catalyst에서 4개의 다른 필터 타입들에 적용이 가능하다.
이들 기능은 DirectX 9나 그 이상의 API 게임들에 적용이 가능하다. 여기에 사용되는 진보된 필터는 edge
detect filter로 텍스처와 쉐이더들을 포함한 모든 모서리를 안티앨리어싱을 적용할 수 있어 그 범위를 넓히고 있다.
DirectX 10.1에서는 Custom 안티앨리어싱 필터를 픽셀 쉐이더와 함께 사용할
수 있는데 Custom Filter는 HDR 조명 (광원)과 지연 쉐이딩 기술의 문제를 가진 MSAA의 특정한 경우에
이미지 품질을 향상시킬 수 있다.
모든 DirectX 10.1 호환 하드웨어들은 4x MSAA를 지원하게 되며, 미리
정의된 AA 샘플 패턴을 GPU들에 정의해놓는다. 또, DirectX 10.1에서는 쉐이더들의 모든 AA 버퍼들에 전근할
수 있게 된다. 이전에는 멀티샘플 컬러 버퍼들에만 접근이 가능했고 각 샘플을 위한 깊이 버퍼들로부터의 정보 접근이
불가능했다.
AMD에서는 HD 2000 시리즈를 통해 CFAA를 적용하여 Custom AA 기술을
쉐이더들과 조합하여 이미 사용하고 있다. 또한, 적응형 안티앨리어싱을 통해 잎과 울타리와 같은 일부 투명 텍스처들을 위한
텍스처 안티앨리어싱 기능을 제공하고 있다. DirectX 10.1의 안티앨리어싱 기술의
도입을 통해 Custon edge detect filters에서 높은 품질의 안티앨리어싱이 가능하고 성능을 최적화할 수
있으며, 적응형 안티앨리어싱에서 성능 개선, HDR 렌더링에서의 안티앨리어싱 품질 개선 등이 가능하게 된다. 또,
Temporal 안티앨리어싱 과정에서 멀티 GPU 안티앨리어싱 이미지 품질 향상도 가능하고 전체적인 안티앨리어싱
호환성 및 성능 개선이 가능해지게 된다. |