アンチエイリアス(英: anti-aliasing)は、サンプリングやダウンサンプリングでエイリアシング(折り返し雑音)が起きないようにするための処理。画像に対して行なうと、ジャギー(ピクセルのギザギザ)が目立たなくなる。
デジタル画像におけるアンチエイリアスデジタル画像におけるアンチエイリアスの例
コンピュータで扱うデジタル画像ではピクセル単位より細かく描画することは出来ない。このため、物体の輪郭にジャギーと呼ばれるギザギザが発生してしまう。このジャギーを軽減し少しでも目立たなくするために、物体の輪郭を背景と融合するように、色を滑らかに変化させることをアンチエイリアスといい、その処理をアンチエイリアシングという。アンチエイリアスをかけると輪郭がぼやけてしまうため、ビットマップフォントなどではアンチエイリアス処理(アンチエイリアシング)は行なわれないことが多い。
ソフトウェアによってはアンチエイリアスの処理に数段階の選択がある場合もある。
アンチエイリアスが使用できる処理には以下のようなものがある: 3次元コンピュータグラフィックス (3DCG) において、通常ポリゴンベースのレンダリング(ラスタライズ)を行なっただけではトライアングルプリミティブのエッジがそのままジャギーとなってしまい、特に低解像度の場合はエッジの目立つ画像となってしまうため、高品位な画像を作成するためにアンチエイリアシング処理が多用されている。プロダクション用途の3DCGソフトウェアでは、通例レンダリング時にアンチエイリアスの技法や品質レベルを選択することができる。また、ゲームやシミュレーターなどのリアルタイム環境でのアンチエイリアシングは、品質とパフォーマンスを両立させるために各種のアンチエイリアシング技術が提案・開発され続けている[1]。リアルタイム環境用途の場合、従来はグラフィックスハードウェアの固定機能やドライバーの固有機能として提供されるものが多かったが、プログラマブルシェーダー対応のハードウェアが登場してからは、FXAAやSMAA/CMAAなど、シェーダーを活用してポストエフェクト処理としてソフトウェア実装することが可能な技法も出現している。
ベクターイメージのラスタライズ
ベクトルフォントのレンダリング
3次元コンピュータグラフィックスのレンダリングの工程
ビットマップ画像(ラスターイメージ)の縮小(ダウンサンプリング)
3DCGにおけるアンチエイリアシング
スーパーサンプリング (Super-Sample Anti-Aliasing, SSAA)
表示する画像解像度より高解像度に描画しておき、描画終了時に高解像度画像を表示解像度に変換(ダウンサンプル)してから表示する。その際、高解像度画像のピクセルを平均化して表示解像度画像が生成される。高品質な画像を生成できる反面、アンチエイリアスのレベルnに応じて、演算負荷およびリソース消費量がnの2乗で増大していくため、非常に負荷が高くなる。
マルチサンプリング (Multi-Sample Anti-Aliasing
スーパーサンプリングのように表示解像度より高解像度で描画するが、その際に各ピクセルにおけるカラー値生成処理(シェーディング、陰影計算)は表示解像度分の演算で済ませ、代わりに深度値(奥行き情報)を高解像度で記録しておき、最終的に深度値の差を参照しながらダウンサンプリングする方式。3DCGの場合、ジャギーが目立つのはオブジェクト(ポリゴン)のエッジである場合が多いことに着目して、オブジェクト内部の陰影計算は表示解像度で端折り、なるべくパフォーマンスを落とさないようにする。MSAAは代表的なグラフィックスAPIであるDirect3DおよびOpenGLの双方で標準化されており、対応するハードウェアも多い。欠点として、明確な奥行き情報の差がないポリゴン内部のジャギーは取り除くことができないため、テクスチャ(カラーマップやアルファマップ)のジャギーには対応できない。また、ディファードレンダリングのようなGバッファを利用する技術との相性が悪い[2] [3]。
Fragment Anti-Aliasing, FAA
Matrox Parheliaに導入された技術[4]。シーン内のエッジ部分を検出し、その近辺にのみアンチエイリアスを行なう。
Custom Filter Anti-Aliasing, CFAA
ATI Radeon HD 2000シリーズ以降においてドライバーレベルで実装されている、テントフィルター (tent filter) を使った重み付き隣接サンプリング技法[5] [6]。
Fast Approximate Anti-Aliasing