版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-深度緩沖

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

在計算機圖形學(xué)中,深度緩沖是在三維圖形中處理圖像深度坐標(biāo)的過程,這個過程通常在硬件中完成,它也可以在軟件中完成,它是可見性問題的一個解決方法??梢娦詥栴}是確定渲染場景中哪部分可見、哪部分不可見的問題。畫家算法是另外一種常用的方法,盡管效率較低,但是也可以處理透明場景元素。深度緩沖也稱為Z緩沖。

簡介當(dāng)三維圖形卡渲染物體的時候,每一個所生成的像素的深度(即z坐標(biāo))就保存在一個緩沖區(qū)中。這個緩沖區(qū)叫作z緩沖區(qū)或者深度緩沖區(qū),這個緩沖區(qū)通常組織成一個保存每個屏幕像素深度的x-y二維數(shù)組。如果場景中的另外一個物體也在同一個像素生成渲染結(jié)果,那么圖形處理卡就會比較二者的深度,并且保留距離觀察者較近的物體。然后這個所保留的物體點深度保存到深度緩沖區(qū)中。最后,圖形卡就可以根據(jù)深度緩沖區(qū)正確地生成通常的深度感知效果:較近的物體遮擋較遠的物體。這個過程叫作z消隱。

深度緩沖的分辨率對于場景質(zhì)量有很大的影響:當(dāng)兩個物體非常接近的時候,16位的深度緩沖區(qū)可能會導(dǎo)致“z緩沖區(qū)fighting”的人為噪聲;使用24位或者32位的深度緩沖區(qū)就會表現(xiàn)得較好;由于精度太低,所以很少使用8位的深度緩沖區(qū)。1

發(fā)展即使深度緩沖區(qū)有足夠大的分辨率,但是如果z緩沖區(qū)中距離精度不隨距離均勻分布的話圖像質(zhì)量也可能會出現(xiàn)問題。距離較近的部分通常精度較高,這樣近距離的物體顯示質(zhì)量也較高。通常這是所期望得到的結(jié)果,但是當(dāng)物體距離變得較遠時可能會出現(xiàn)人為誤差。一種能夠得到更加均勻分布精度的深度緩沖變體是w緩沖。

在場景開始的時候,必須將深度緩沖區(qū)初始化為一個特定的值,通常初始化為1.0,這是因為1.0是深度范圍0到1的上限,它意味著在整個視體(viewing frustum)之內(nèi)沒有任何物體。

通常認(rèn)為深度緩沖概念的發(fā)明主要歸功于艾德文·卡特姆,雖然Wolfgang Stra?er也在1974年所寫的博士論文中提到了同樣的思想。

在最近的PC圖形卡上,深度緩沖管理需要使用大量的內(nèi)存帶寬。人們采用了各種各樣的方法減少深度緩沖的影響,其中的方法有無損數(shù)據(jù)壓縮(因為壓縮/解壓所消耗的計算機資源要比帶寬的占用更加合算)。另外還使用了極快的硬件工具清除深度信息,這種方法完全取代了“一幀正、一幀負(fù)”這種利用有符號數(shù)巧妙地繞過幀間深度信息清除的技巧。

z消隱在渲染過程中,z消隱是根據(jù)深度信息對像素的早期剔除。當(dāng)渲染隱藏表面所需要的計算量很大的時候,這種方法可以提升處理性能。z消隱是深度緩沖的一個直接結(jié)果,在這種方法中每個待定像素的深度都要與相同位置的現(xiàn)存像素的深度進行比較。

使用深度緩沖區(qū),一旦像素的深度已經(jīng)確定,那么就可以對這個像素進行裁剪,這樣如果該像素不可見的話就可以完全跳過照明與紋理處理的過程,并且需要消耗許多時間的像素濃淡工具通常也會跳過對于裁剪掉的像素的處理。這樣z消隱就成為了在填充速度、光照、紋理或者像素濃淡處理是主要瓶頸的場合的一種很好的優(yōu)化工具。

盡管深度緩沖可以處理未經(jīng)排序的幾何體,但是按照深度不斷增加的方式(與畫家算法排序方式相反)對多邊形進行排序,每個像素就可以只渲染一次。對于填充速度有限但是有大量重復(fù)繪制場合,這種方法就可以提高處理性能。

數(shù)學(xué)基礎(chǔ)待渲染的照相機空間中的深度經(jīng)常定義為近距near到遠距far之間的z值,在透視變換之后,得到新的z'值:

其中{\displaystyle z}是照相機空間的值,它有時候也表示為w或者w'。

結(jié)果z'是在 -1到1之間歸一化之后的值,其中近距near平面位于 -1處,遠距far平面位于1處。在這個范圍之外的相應(yīng)點在視圖體之外,不需要進行渲染。

為了實現(xiàn)深度緩沖,在整個屏幕空間上的對當(dāng)前多邊形頂點之間進行插值來計算z'的值,通常這些中間數(shù)值在深度緩沖區(qū)中用定點數(shù)格式保存。距離近距near平面越近,z'值越密;距離越遠,z'值越稀。這樣距離照相機越近精度越高。near平面距離照相機越近,則遠距離位置的精度越低。near平面距離照相機太近是在遠距離物體產(chǎn)生人為誤差的一個常見因素。

w緩沖

為了實現(xiàn)w緩沖,通常照相機空間中的z值或者w值都保存成浮點數(shù)格式,但是這些數(shù)值無法根據(jù)頂點在整個屏幕上進行線性插值——通常對它的倒數(shù)進行插值,然后再取倒數(shù)。這樣得到的結(jié)果w值與z'不同,它們在near平面與far平面之間均勻分布。

根據(jù)應(yīng)用的不同z緩沖與w緩沖生成的圖像質(zhì)量也有所不同。2

本詞條內(nèi)容貢獻者為:

李岳陽 - 副教授 - 江南大學(xué)