Re: [請益] 什麼是24位元 Z緩衝深度

看板VideoCard作者時間15年前 (2008/11/22 19:13), 編輯推噓17(1701)
留言18則, 17人參與, 最新討論串1/1
※ 引述《Sheng1025 (努力活下去)》之銘言: : 我的顯卡是 ASUS ATI 4670 : 在3D設定裡面有個選項是 強制 24位元 Z緩衝深度 : 請問這是用來做什麼的 玩遊戲開啟這選項 : 對畫面會有幫助嗎? =====牆壁 人物B 箱子A 人物C ^^^ ||| ----------螢幕虛擬平面 3D遊戲中,把你的螢幕畫出來的東西.當成在螢幕後面存在一個虛擬的世界. 這時候你看見的物體,相對於你的螢幕平面或者是"視角".都會有一個深 度的距離. 比如說,箱子距離你0.5M,人物距離0.8M,牆壁距離3M. 所以Z-buffer是儲存"每個Pixel",對應的現在被畫出來的物件 距離你的螢幕的距離......用途是決定接下來繪製其他pixel的時候, 就可以決定哪些pixel該被遮住,哪些該被重劃. 上面這個聽起來像是木星話嗎? 那麼這樣說明好了,假設人是躲在箱子後面偷看你,也就是說,人頭有部分 被箱子遮住.部分沒有.箱子所占用的pixel為A,人所占用的為B AAAAAAAA AAAAAAAAA AAAAAAAAAA AAAAAAAAAA <--繪畫箱子 AAAAAAAAAA AAAAAAAAAA BBBBBBB AAAAAAAABB AAAAAAAAABB <--繪畫人 AAAAAAAAAABB AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA 為何會知道畫人的時候,部分的pixel是被箱子遮住.必須避開不畫. 而剩下的部分要畫出來呢?就是以Z-buffer實作來解決這個問題. 假如說先畫箱子,那麼這些pixel對應的Z-buffer大小就是0.3M. 接下來要畫的物件和這個區域重疊的時候,如果新物件的Z的大小 大於0.3M,表示會被遮住,不用畫在螢幕上.如果Z的大小小於0.3M 表示重疊部分必須更新重畫. 如果接下來要畫的是更前面的人物C.那麼因為C的Z值都比現存的 Z-buffer的值小,所以知道重疊的pixel都一全部重劃,並且把 這些pixel的Z-buffer更新成更小的Z值. 那麼..Z-buffer設定成24bit有什麼意義呢?因為相較於原本的16-bit Z-buffer. 把數字變大,可以得到比較高的精確值以及表示範圍. 比如說,如果我把場景中的"最遠"定義成60公尺左右.那麼16-bit Z-buffer 的最小單位就會是差不多0.1cm...這看起來是很夠用了,就算我們把視角 轉回桌上的文具等等.也不用擔心繪圖因為精確度太差而出問題. 不過實際上並沒有這麼簡單.因為Z-buffer儲存的是Z值(聽起來像是火星話, 但是我不打算現在解釋).所以說,Z-buffer每差一個單位,在越遠的地方會差異越大. 換個方式解釋好了.你的螢幕上同樣的一個pixel,在看很近的東西的時候, 一個pixel所佔有的實際長度很短.但是視角切換到看遠處的時候,一個pixel 所佔有的實際長度/面積會大很多. 如果說我希望場景的深度最深達到1000公尺,在這個等級的時候. 我看最遠處(1公里)的東西,16-bit Z-buffer"不能"分辨出 小於30公尺內的物件的正確遮蔽關係.這表示物體的三角面會有 很多被計算錯誤.就會出現物體的邊緣不正常的被吃掉,或者是畫出 詭異的形狀等等.更嚴重的情況則是,有些物件只要移動一點點. 就會算出孑然不同的結果.那麼你就會看到這個物體一面變形一面移動. 或者是產生視覺上嚴重閃爍的問題. 如果Z-buffer提升到24-bit,那麼可分辨的下限 就大概是降為12.5cm左右...這表示可以降低非常多畫面遠處畫錯的問題. Z-buffer提高精確度的好處就是以上那樣. 壞處?16-bit變成24-bit,略為提升記憶體佔用量. 當然就現在的顯示卡而言,解析度*24bit的記憶體用量 少的跟一根腳毛差不多.不過同時讀寫的頻寬也成正比增加. 在繪製3D圖案的時候,Z-buffer是不斷的讀取以及寫入的. 另外一個不用提高Z-buffer精確度的方法則是把Z-buffer改為以 W-buffer實作,Z-buffer儲存的為Z值而W buffer儲存的為W值 (怎麼又是火星話!!),W-buffer的好處就是經過換算,在極遠處 跟很近的地方的可辨別精確度相同.因此也不需要特意提高精確度, 可以繼續沿用16-bit的精確度就夠了.但是缺點就是W-buffer需要 額外換算,因此會佔用硬體的計算資源,或者是硬體實作上會比較複雜等等. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.117.195

11/22 19:16, , 1F
知識推
11/22 19:16, 1F

11/22 19:20, , 2F
專業!
11/22 19:20, 2F

11/22 19:26, , 3F
受教了 推一個
11/22 19:26, 3F

11/22 19:35, , 4F
厲害厲害 推一下~
11/22 19:35, 4F

11/22 19:35, , 5F
厲害
11/22 19:35, 5F

11/22 21:12, , 6F
真專業!
11/22 21:12, 6F

11/22 21:32, , 7F
不得不推@@"
11/22 21:32, 7F

11/23 01:05, , 8F
推電腦繪圖學 :)
11/23 01:05, 8F

11/23 10:26, , 9F
我真的看不懂 但還是要推
11/23 10:26, 9F

11/23 10:47, , 10F
請問原PO談的這些"電腦繪圖學"是什麼系所會開的課,好奇中!
11/23 10:47, 10F

11/23 11:35, , 11F
資工
11/23 11:35, 11F

11/23 13:08, , 12F
感謝!
11/23 13:08, 12F

11/23 14:51, , 13F
看不懂......可是還是要給推^^"
11/23 14:51, 13F

11/23 16:42, , 14F
你的箱子跟人物圖畫反了吧?
11/23 16:42, 14F

11/23 16:47, , 15F
看顯卡板 長知識
11/23 16:47, 15F

11/23 19:53, , 16F
不懂推....
11/23 19:53, 16F

11/24 01:34, , 17F
11/24 01:34, 17F

11/24 08:24, , 18F
所以強制開比較好囉..反正占的記憶體不算什麼y
11/24 08:24, 18F
文章代碼(AID): #199-bQBk (VideoCard)