アンチエイリアス
アンチエイリアス(英: anti-aliasing)は、サンプリングやダウンサンプリングでエイリアシング(折り返し雑音)が起きないようにするための処理。画像に対して行なうと、ジャギー(ピクセルのギザギザ)が目立たなくなる。
デジタル画像におけるアンチエイリアス
[編集]![](http://upload.wikimedia.org/wikipedia/commons/4/40/EDGE1.gif)
コンピュータで扱うデジタル画像ではピクセル単位より細かく描画することは出来ない。このため、物体の輪郭にジャギーと呼ばれるギザギザが発生してしまう。このジャギーを軽減し少しでも目立たなくするために、物体の輪郭を背景と融合するように、色を滑らかに変化させることをアンチエイリアスといい、その処理をアンチエイリアシングという。アンチエイリアスをかけると輪郭がぼやけてしまうため、ビットマップフォントなどではアンチエイリアス処理(アンチエイリアシング)は行なわれないことが多い。
ソフトウェアによってはアンチエイリアスの処理に数段階の選択がある場合もある。
アンチエイリアスが使用できる処理には以下のようなものがある:
3DCGにおけるアンチエイリアシング
[編集]3次元コンピュータグラフィックス (3DCG) において、通常ポリゴンベースのレンダリング(ラスタライズ)を行なっただけではトライアングルプリミティブのエッジがそのままジャギーとなってしまい、特に低解像度の場合はエッジの目立つ画像となってしまうため、高品位な画像を作成するためにアンチエイリアシング処理が多用されている。プロダクション用途の3DCGソフトウェアでは、通例レンダリング時にアンチエイリアスの技法や品質レベルを選択することができる。また、ゲームやシミュレーターなどのリアルタイム環境でのアンチエイリアシングは、品質とパフォーマンスを両立させるために各種のアンチエイリアシング技術が提案・開発され続けている[1]。リアルタイム環境用途の場合、従来はグラフィックスハードウェアの固定機能やドライバーの固有機能として提供されるものが多かったが、プログラマブルシェーダー対応のハードウェアが登場してからは、FXAAやSMAA/CMAAなど、シェーダーを活用してポストエフェクト処理としてソフトウェア実装することが可能な技法も出現している。
- スーパーサンプリング (Super-Sample Anti-Aliasing, SSAA)
- 表示する画像解像度より高解像度に描画しておき、描画終了時に高解像度画像を表示解像度に変換(ダウンサンプル)してから表示する。その際、高解像度画像のピクセルを平均化して表示解像度画像が生成される。高品質な画像を生成できる反面、アンチエイリアスのレベルnに応じて、演算負荷およびリソース消費量がnの2乗で増大していくため、非常に負荷が高くなる。
- マルチサンプリング (Multi-Sample Anti-Aliasing, MSAA)
- スーパーサンプリングのように表示解像度より高解像度で描画するが、その際に各ピクセルにおけるカラー値生成処理(シェーディング、陰影計算)は表示解像度分の演算で済ませ、代わりに深度値(奥行き情報)を高解像度で記録しておき、最終的に深度値の差を参照しながらダウンサンプリングする方式。3DCGの場合、ジャギーが目立つのはオブジェクト(ポリゴン)のエッジである場合が多いことに着目して、オブジェクト内部の陰影計算は表示解像度で端折り、なるべくパフォーマンスを落とさないようにする。MSAAは代表的なグラフィックスAPIであるDirect3DおよびOpenGLの双方で標準化されており、対応するハードウェアも多い。欠点として、明確な奥行き情報の差がないポリゴン内部のジャギーは取り除くことができないため、テクスチャ(カラーマップやアルファマップ)のジャギーには対応できない。また、ディファードレンダリングのようなGバッファを利用する技術との相性が悪い[2] [3]。
- Fragment Anti-Aliasing, FAA
- Custom Filter Anti-Aliasing, CFAA
- ATI Radeon HD 2000シリーズ以降においてドライバーレベルで実装されている、テントフィルター (tent filter) を使った重み付き隣接サンプリング技法[5] [6]。
- NVIDIAが考案したポストエフェクト技法。表示解像度において、ピクセル色を周囲と比較して輝度差を調べ、輝度差があるピクセルの色は周囲と混ぜ合わせる。プログラマブルシェーダーを活用して明示的にソフトウェア実装することができる[7]ほか、NVIDIA GeForceやNVIDIA Quadroではグラフィックスドライバー側でFXAAを自動的に強制適用するオプションも存在する。低負荷であり、またMSAAと違ってテクスチャ内部のジャギーにも対応できることなどが特徴。高速近似アンチエイリアスとも。
- TXAA
- MSAAの欠点を克服する技術として、NVIDIAが開発した。TXAAに対応するNVIDIAハードウェアと、対応するタイトル(ゲームソフトウェア)の組み合わせのみで利用可能。
- エッジ検出ベースのポストプロセス(後処理)によるアンチエイリアス技術の総称[8]。形態的アンチエイリアスとも。
- Enhanced Sub-pixel Morphological Anti-Aliasing, SMAA
- Conservative Morphological Anti-Aliasing, CMAA
信号処理におけるアンチエイリアス
[編集]デジタル信号では、あるサンプリング周波数でサンプリングされるために、サンプリング周波数の半分を超える周波数成分は折り返し雑音となる(サンプリング定理を参照)。この折り返し雑音 (alias) を遮断する技術がアンチエイリアスである。
アンチエイリアス処理の実現方法の簡単な例は、帯域制限フィルタを使ってサンプリング周波数の半分を超える周波数成分をあらかじめ除去してからサンプリングをすることである。このフィルタは低域通過フィルタ(ローパスフィルタ、low-pass filter)であり、アンチエイリアス処理を行なう低域通過フィルタをアンチエイリアスフィルタと呼ぶ。
なお、デジタル画像は二次元信号と捉えると、原画像にサンプリング処理された画像がディスプレイなどに表示されているとみなせる。このサンプリング時にエイリアス(ジャギー)が発生するのでそれを軽減することがアンチエイリアスである。ゆえに、デジタル画像におけるアンチエイリアスと信号処理におけるアンチエイリアスは同等のものである。
脚注
[編集]- ^ 4Gamer.net ― NVIDIA,独自のアンチエイリアシング技法「FXAA」「TXAA」をアピール。いまあらためて振り返るアンチエイリアシングの歴史
- ^ 4Gamer.net ― 次世代ゲーム機のグラフィックスはどうなる? CEDEC 2012 ゲーム開発マニアックス~グラフィックス編
- ^ Antialiased Deferred Rendering
- ^ 16xFragment_antialiasing.qxd - faa_16x.pdf
- ^ [連載][西川善司の3Dゲームエクスタシー]「ATI Radeon HD 2000」シリーズのGPUアーキテクチャ徹底解説
- ^ NVIDIA、Radeon HD 2000の仕様に異論
- ^ FXAA 3.11 Sample
- ^ UDK | PostProcessAAJP
- ^ SMAA: Enhanced Subpixel Morphological Antialiasing
- ^ 【GDC2012】西川善司の3Dゲームファンのための「CRY ENGINE」講座・Ver.2012 - GAME Watch
- ^ Conservative Morphological Anti-Aliasing (CMAA) - March 2014 Update | Intel® Developer Zone
- ^ Release Notes; DRIVER VERSION: 15.36.3.3907 & 15.36.3.64.3907; DATE: September 5th, 2014
- ^ Conservative Morphological Anti-Aliasing 2.0 | Intel