這篇文章主要是參考MJP的“Attack of The Depth Buffer”,測試不同格式下depth buffer的精度。

測試的depth buffer包含兩類: 一是非線性的depth buffer,存儲著perspective z(也就是最常用的,透視投影后歸一化的z/w的buffer),二是線性的depth buffer,存儲著view space z(這里的線性指的是在view space 中是否線性)。測試的格式包括16位浮點數(shù),32位浮點數(shù),16位定點數(shù),還有最常用的24位定點數(shù)(DXGI_FORMAT_D24_UNORM_S8_UINT) 。

測試的方法是在pixel shader里采樣depth buffer,然后構(gòu)建出view space position,把這個值和vertex shader里插值過來的position做對比,把兩者的差別輸出到RT的red分量,這樣越紅的部分誤差就越大。測試的near-clip plane為1,far-clip plane為300,場景模型用的是DXSDK里的Columns。

測試程序畫面的左半邊顯示精度誤差,右半邊顯示把精度誤值乘以100的結(jié)果。

運行結(jié)果:

  • Linear Z,16位浮點格式

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

從結(jié)果可以看出16位浮點的誤差還是蠻大的,越靠近far-clip plane,誤差越大

 

  • Linear Z,32位浮點格式

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式