コンピュータグラフィックスにおいて、Aバッファ(アンチエイリアスバッファ、エリア平均バッファ、またはアキュムレーションバッファとも呼ばれる)は、中規模仮想メモリコンピュータに適した一般的な隠面メカニズムです。これは、不透明、透明、および交差する任意のオブジェクトの集合間の可視性を実現します。計算が容易なフーリエウィンドウ(ボックスフィルタ)を使用することで、コストの増加はわずかで、Zバッファに比べて実効画像解像度を何倍にも向上させます。[ 1 ]
Aバッファ法は、よく知られているZバッファ法の派生形であり、適度な時間で高品質な結果を提供する。
3D画像合成システムにおいては、画質と計算コストのバランスが常に求められてきた。各ピクセルでオブジェクト精度の可視面アルゴリズムを完全に適用すると、計算コストが高くなる。Aバッファ方式は、適度な計算コストで適度な画質を実現する。
A-buffer は可視性技術の使用に役立ち、考えられるすべての幾何学的モデリング プリミティブ (多角形、パッチ、二次曲面、フラクタルなど) をサポートします。また、透明度や交差するサーフェス (および透明な交差するサーフェス) の処理にも役立ちます。A-buffer スタイルのメソッドは、GPU 上で正確な順序に依存しない透明度を実現するためにも使用されており、ピクセルのフラグメントはピクセルごとに可変長の構造 (一般的にはリンク リスト) にキャプチャされ、その後、深度順にソートされて、後のステップで合成されます。[ 2 ] [ 3 ]
カーペンターの A バッファ アルゴリズム[ 1 ]は、サブ ピクセル グリッド上で実行されるピクセルごとの画像精度演算で、キャットマルのピクセルごとのオブジェクト精度領域サンプリング[ 4 ]を近似することで、この問題に対処します。カーペンターの REYES 実装では、ポリゴンはおおよそスキャン ラインの順序で生成されましたが、スキャン ラインの順序は A バッファ自体では必須ではありませんでした。[ 1 ]ポリゴンは、まず、カバーする各正方形ピクセルにクリップすることで、スキャン ラインの順序で処理されます。これにより、各正方形ピクセルに対応するクリップされたポリゴン フラグメントのリストが生成されます。A バッファ方式では、これらのフラグメントは、最も近い可視フラグメントだけでなく、可変長のピクセルごとのリストに格納されます。ただし、カーペンターの元の実装では、単純な完全にカバーされたピクセルに対しては解決された色を直接格納し、複雑なピクセルに対しては前面から背面へのフラグメント リストへのポインタを使用していました。[ 5 ] [ 1 ]各フラグメントには、カバーするピクセルの一部を表す 4 x 8 ビットのマスクがあります。[ 6 ]
フラグメントのビットマスクは、そのフラグメントの各エッジを表すマスクをXOR演算することで計算されます。ピクセルと交差するすべてのポリゴンが処理された後、深さ順にフラグメントを選択し、それらのビットマスクを使用してさらに奥にあるフラグメントのビットマスクをクリッピングすることで、ピクセルの可視面の色の面積加重平均が得られます。
ビットマスクはブール演算で効率的に操作できます。たとえば、2つのフラグメントビットマスクを加算して、それらの重なり具合を判定できます。Aバッファアルゴリズムは、各フラグメントに少量の追加情報のみを保存します。たとえば、フラグメントのz方向の範囲は含まれますが、フラグメントのどの部分がこれらのz値に関連付けられているかについての情報は含まれません。そのため、フラグメントビットマスクがz方向で重なる場合、アルゴリズムはサブピクセル形状について仮定を置く必要があります。