「深度バッファ」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
 
1行目: 1行目:
深度バッファ(depth buffer)とは、3DCGにおいて深度情報を用いて物体の描画処理を省略し高速化するために確保されたメモリ領域である。
+
'''深度バッファ'''(depth buffer)とは、[[3DCG]]において深度情報(Z値)を記録しておく[[バッファ]]([[メモリ]])のことです。これを利用することで不要な描画処理を省略することができます。
 +
 
 +
深度バッファは「[[Zバッファ]]」などとも呼ばれます。いわゆる方言であり意味は同じです。
  
 
== 概要 ==
 
== 概要 ==
一般的に深度バッファは「0.0〜1.0」までの範囲の24ビットの[[固定小数点数]]で表されることが多い。これは処理系により異なる。16ビットや32ビットの[[浮動小数点数]]を用いるものもある。
+
[[パソコン]]界隈では深度バッファは「0.0〜1.0」までの範囲の24ビットの[[固定小数点数]]で表されるものが[[デファクトスタンダード]]となっています。
 
+
これは[[Direct3D]]が標準採用した形式だったためです。
「24ビット固定小数点数の深度バッファ」は[[DirectX]]が長らく採用してきた関係で広まっているだけである。
+
ただ24ビットでは転送効率が良くないので、8ビットの[[ステンシルバッファ]]を加えて、計32ビットで処理するものが多いです。
  
また、24ビットでは転送効率が良くないので、8ビットに[[ステンシルバッファ]]を割り当て、計32ビットで処理することが多い。
+
処理系によっては16ビットや32ビットの[[浮動小数点数]]を用いるものもあります。
  
 
== 深度テスト ==
 
== 深度テスト ==

2023年3月2日 (木) 05:52時点における版

深度バッファ(depth buffer)とは、3DCGにおいて深度情報(Z値)を記録しておくバッファメモリ)のことです。これを利用することで不要な描画処理を省略することができます。

深度バッファは「Zバッファ」などとも呼ばれます。いわゆる方言であり意味は同じです。

概要

パソコン界隈では深度バッファは「0.0〜1.0」までの範囲の24ビットの固定小数点数で表されるものがデファクトスタンダードとなっています。 これはDirect3Dが標準採用した形式だったためです。 ただ24ビットでは転送効率が良くないので、8ビットのステンシルバッファを加えて、計32ビットで処理するものが多いです。

処理系によっては16ビットや32ビットの浮動小数点数を用いるものもあります。

深度テスト

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

これは擬似的なプログラミング言語である。

// 深度バッファを準備する
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;
     }
}

関連項目