差分

ナビゲーションに移動 検索に移動

深度バッファ

1,702 バイト追加, 2019年10月17日 (木) 09:12
深度バッファ(depth buffer)とは、3DCGにおいて深度情報を用いて物体の描画処理を省略し高速化するために確保されたメモリ領域である。

== 概要 ==
一般的に深度バッファは「0.0〜1.0」までの範囲の24ビットの[[固定小数点数]]で表されることが多い。これは処理系により異なる。16ビットや32ビットの[[浮動小数点数]]を用いるものもある。

「24ビット固定小数点数の深度バッファ」は[[DirectX]]が長らく採用してきた関係で広まっているだけである。

また、24ビットでは転送効率が良くないので、8ビットに[[ステンシルバッファ]]を割り当て、計32ビットで処理することが多い。

== 深度テスト ==
深度バッファは以下のような使われ方をする。

これは擬似的なプログラミング言語である。
<source>
// 深度バッファを準備する
var depthBuffer = new DepthBuffer[w,h];
// 深度バッファは1.0で埋めておく
depthBuffer.fill(1.0);

// ポリゴンをピクセル群にラスタライズする
foreach (var pixel in polygon.toPixels())
{
// ピクセルとカメラの距離(深度)を求める
var depth = vector3.distance( pixel.position, camera.position);

// 深度を比較する
if ( depthBuffer[pixel.position.xy] <= depth )
{// 後ろなので何もしない
nop();
}
else
{// 描画と深度の記録をする
pixel.draw();
depthBuffer[pixel.position.xy] = depth;
}
}
</source>

== 関連項目 ==
* [[深度バッファ]]
* [[ステンシルバッファ]]
* [[カリング]]
匿名利用者

案内メニュー