Zバッファ

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
3次元画像(上)とそのZバッファの表示(下)。奥ほど白く描いている。

Zバッファ (Z-buffer, Z-buffering) とは、3次元コンピュータグラフィックスにおいて、深度情報を用いて物体の描画処理を省略し高速化するための技術、およびその深度情報を格納するメモリ領域のことを指す。深度バッファ (Depth buffer) とも呼ばれる。コンピュータグラフィックスの分野では比較的古くから存在する枯れた技術(ローテク)ではあるが、計算資源の制約が多いリアルタイムグラフィックス用途では特に効果的な技術であり、2015年現在では流通するほぼあらゆるハードウェア(グラフィックスカード/グラフィックスチップ)で使用することができる。

同種として、より描画精度を向上させられるWバッファという技術もある[1] [2]が、こちらはあまり使われていない[要出典]

概要[編集]

まず、画面(レンダーターゲット)内において、あるピクセルに物体(の一部)を描画する際に、物体表面の深度(奥行き)を保存しておく。ここでは例えば最も手前の深度値をゼロと定め、奥に進むにつれて深度値が大きくなるものと定める(このルールは処理系によって異なる)。次に同じピクセルに物体を描画することになった場合、前回保存した深度の値と今回描画する物体の深度の値の大きさを比較する(この比較のことを、Zテストと呼ぶこともある)。もし今回の深度の方が大きければ、つまり奥にあれば、手前の描画済み物体に隠されて見えないので、新たにピクセルへ描画処理を行なわずに済むことになる。このため、手前に存在する物体から描画して、最後に奥に存在する物体を描画するようにすれば、計算時間を節約することができる。

Zバッファの基本的な原理はこのようなものであるが、このとき画面全体の深度をまとめて保存しておくメモリ領域もまたZバッファと呼ばれる。Zバッファは一般に2次元テクスチャの一形態として扱われる。

Zバッファという名前は、Z-index(3次元空間の次元軸を表すXYZのうち、通例奥行きを表すことが多いZ軸の値)を保存するバッファ(一時領域)であるところから来ている。

問題点[編集]

半透明の物体を描画(ブレンディング)する際には、単純なZバッファの比較だけでは正しい結果が得られない。ブレンディングの際には奥に存在する物体の情報が必要だが、もし手前から描画してしまうと奥に存在する物体の描画がスキップされてしまうからである。

また、メモリの制約でZバッファの精度が低い場合や、広大な空間を描画する場合ではZファイティングが発生してしまい正しい結果が得られない。

関連項目[編集]

脚注[編集]

[ヘルプ]