レンダーバックエンドの拡大図をよく見ると「プログラマブルMSAAリゾルヴ」(Progeammable MSAA Resolve)というセクションがあることに気が付くだろう。従来のGPUでもそうだが、アンチエイリアス処理はレンダーバックエンドの部分で処理される。

Radeon HD 2000シリーズでは、歴代のRadeonが実装していた、以下のアンチエイリアス技術は全て実装されている。

  1. マルチサンプル・アンチエイリアシング(Multi-Sampling AA)
  2. テンポラル・アンチエイリアシング(Temporal AA)
  3. 適応型スーパーサンプル/マルチサンプル・アンチエイリアシング(Adaptive Supersampling/Multisampling AA)
  4. CrossFire スーパー・アンチエイリアシング(CrossFire AA)

これらに加え、Radeon HD 2000シリーズでは新しい「カスタム・フィルタ・アンチエイリアシング」(CFAA:Custom Filter Anti-Aliasing)という新技術がサポートされた。

このCFAAについて触れる前に、アンチエイリアスについての基本情報を確認しておこう。

アンチエイリアス処理は、一般にはジャギーを低減させる処理ということになっているが、実際に行われる処理としては、ピクセルシェーダを経て得られたピクセルをそのまま出力するのではなく、これよりもさらに小さいサブピクセルの単位で処理して最終的な出力ピクセルを決定する、という仕組みになる。

ピクセルよりも小さいサブピクセル全てに対して実際にピクセルシェーダを回してレンダリングするのが「スーパーサンプル法」だ。

これに対し、ピクセルシェーダからの出力は1個だけにして、エッジ判定における深度値の検査などだけをサブピクセル単位に行っう(全てのサブピクセルカラーはそのピクセルシェーダからの1個で複製してしまう)、いわばスーパーサンプル法よりも適度に手を抜くメソッドが「マルチサンプル法」になる。

スーパーサンプルにしろマルチサンプルにしろ、一般にアンチエイリアス処理は、このサブピクセル(=サンプル数)をいくつ設定するかがアンチエイリアスのクオリティのキーポイントになっていた。だから、最近のGPUのアンチエイリアスのクオリティ合戦では"16x"MSAAとかの「サンプル数値合戦」の様相を呈していたわけだ。

ところが、サンプル数を幾ら増やしても、アンチエイリアスのクオリティはだんだんと収束していってしまい、負荷に対して得られるアンチエイリアスのクオリティが見合わなくなってくる。

AMDは、今回、このテーマに関して「サンプル数を闇雲に増やしてもクオリティが上がらないのは、想定するサブピクセルの位置が、ピクセル境界内に限定されていたからだ」と仮定し、ピクセル境界を飛び出したサブピクセル位置を想定する新アンチエイリアスモードを考案した。これが「カスタム・フィルタ・アンチエイリアシング」(CFAA:Custom Filter Anti-Aliasing)になる。

従来のアンチエイリアス処理ではどんなにサブピクセル数を増やそうが、その場所がピクセル境界内に限定されていた

現在のバージョンでは、フィルタパターンとして用意されているのは、隣接したピクセルにちょっとだけはみ出るようにしてサブピクセルを想定する「ナローテント・フィルタ」(Narrow Tent Filter)と、隣接したピクセルの中側に大胆にサブピクセルを想定する「ワイドテント・フィルタ」(Wide Tent Filter)が選択できる。実際には、表に示したような「ピクセル境界内サブピクセルをxサンプル+ピクセル境界外サブピクセルをyサンプル」といった感じになるようだ。

隣接するピクセルの方にちょっとだけサブピクセルを想定するナロー・テント・フィルター・カーネル

隣接するピクセルの奥に貪欲にサブピクセルを想定するワイド・テント・フィルター・カーネル

CFAAモード一覧。例えば「4xCFAA」の場合「2xピクセル境界内サンプル+2xナローテント・フィルタでピクセル境界外サンプル」の意味を表す

CFAAの"C"は「カスタム」なので、サンプルポイントをユーザー定義(この場合ユーザー=開発者だが)できるようなイメージのネーミングが付けられているが、実際、Radeon HD 2000シリーズとしてはハードウェア的にはその仕組みが実装されているという。現在のDirectX 10では、こうしたアンチエイリアス用のフィルタカーネルがプログラマブルフィーチャーとして公開されていないため、やりようがないのだが、DirectX 10.1以降では、その仕組みが提供されるようになるかもしれない。それまでは、CFAAの改良や新サンプルモードの追加は、新しいドライバソフトの提供の際に行われるようだ。

GDC2007で示されたDirectX 10.1へ実装を検討しているフィーチャーの1つとして「プログラマブルアンチエイリアス機能」が紹介された

実際に、CFAAの効果を見てみると、効果は予想以上に高い。

ジャギーが滑らかに低減されているのにもかかわらず、エッジ部が過度にボケた感じもなく、滑らかさとシャープさがほどよく両立された自然な画になっている。一般的なMSAAでは弊害として露見してしまう、映像が動いているときに時々見える、色境界付近のピクセルの明滅のような現象も起きにくくなっている。また、サンプル数が少なくても高いアンチエイリアス効果が得られるのも"負荷対効果"の意味において大いに意義があるといえる。

NVIDIAのCSAAも少ないサンプル数で高いアンチエイリアス効果を得るための技術だったが、ピクセル境界に縛られていた技術だった。確かにAMD提供の資料を見る限りではCFAAのクオリティは同じサブピクセル数で比較してもCSAAよりも高く見える。

NVIDIA GeForce 8800シリーズの新アンチエイリアス技術「CSAA」モードとの比較

このCFAAはRadeon HD 2000シリーズのハードウェアとして実装されているので、Windows XP/DirectX 9/SM3.0環境下の既存ゲームソフトを動作させたときにも効果が得られるとしている。HDRレンダリング、ステンシルシャドウとの相性とも問題なく、前述した既存のアンチエイリアス技術との組み合わせも可能となっている。

CFAAの効果

4xCFAA対4xMSAA。同じ4点サブピクセルサンプルでもクオリティはここまで違う