一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

可視化深度精度

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Nathan Reed ? 2022-04-30 07:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

深度精度是每一個(gè)圖形程序員遲早都要面對的難題。關(guān)于這個(gè)主題已經(jīng)寫了很多文章和論文,在不同的游戲、引擎和設(shè)備中可以找到各種不同的深度緩沖格式和設(shè)置。

由于它與透視投影交互的方式, GPU 硬件深度映射有點(diǎn)晦澀難懂,研究這些方程可能不會(huì)讓事情立即變得顯而易見。為了獲得它如何工作的直覺,畫一些圖片是很有幫助的。

這篇文章有三個(gè)主要部分。在第一部分中,我試圖為非線性深度映射提供一些動(dòng)機(jī)。其次,我提供了一些圖表來幫助理解非線性深度映射在不同情況下是如何工作的,直觀且直觀。第三部分是 Paul Upchurch 和 Mathieu Desbrun ( 2012 )關(guān)于浮點(diǎn)舍入誤差對深度精度影響的提高透視渲染的精度主要結(jié)果的討論和再現(xiàn)。

為什么是 1 / z

GPU 硬件深度緩沖區(qū)通常不會(huì)存儲(chǔ)對象在相機(jī)前面的距離的線性表示,這與您第一次遇到這種情況時(shí)天真的期望相反。相反,深度緩沖區(qū)存儲(chǔ)的值與世界空間深度的倒數(shù)成比例。我想簡要介紹一下這次大會(huì)。

在本文中,我使用d表示深度緩沖區(qū)中存儲(chǔ)的值(在[0 , 1]中),并使用z表示世界空間深度,即沿視圖軸的距離,以世界單位(如米)表示。一般而言,它們之間的關(guān)系如下:

pYYBAGJZPfqAGgCjAAAHoXuXaz4472.png

在此公式中,a和b是與近平面和遠(yuǎn)平面設(shè)置相關(guān)的常數(shù)。換言之,d始終是1/z.從表面上看,您可以想象將d作為您喜歡的z的任何函數(shù)。那么,為什么會(huì)有這種特殊的選擇呢?有兩個(gè)主要原因。First,1/z自然適合透視投影的框架。這是保證保持直線的最普通的變換類,這使得硬件光柵化變得很方便,因?yàn)槿切蔚闹边呍谄聊豢臻g中保持筆直??梢陨傻木€性重映射1/z通過利用硬件已經(jīng)執(zhí)行的透視圖劃分:

pYYBAGJZPfSAGbkKAAAbZS2hT9c230.png

當(dāng)然,這種方法的真正威力在于投影矩陣可以與其他矩陣相乘,從而允許您將多個(gè)變換階段組合在一個(gè)矩陣中。

第二個(gè)原因是1/z在屏幕空間中是線性的,如埃米爾·佩爾松所述。因此,在柵格化的同時(shí),在三角形上插值d是很容易的,而像分層 Z 緩沖區(qū)、早期 Z 消隱和深度緩沖區(qū)壓縮這樣的事情都要容易得多。

繪制深度圖

方程是硬的;這里有一些照片!

poYBAGJZPgGAFFE9AACNgsbu3ro800.png

閱讀這些圖表的方法是從左到右,然后從下到下。從d開始,繪制在左軸上。因?yàn)閐可以是1/z,您可以將 0 和 1 放置在此軸上任意位置。勾號表示不同的深度緩沖區(qū)值。為了便于說明,我正在模擬一個(gè) 4 位標(biāo)準(zhǔn)化整數(shù)深度緩沖區(qū),因此有 16 個(gè)等距記號。

水平追蹤刻度線,直到它們擊中目標(biāo)的位置1/z曲線,然后向下至底部軸。這就是世界空間深度范圍中不同值的位置。

圖 1 顯示了 D3D 和類似 API 中使用的“標(biāo)準(zhǔn)”深度映射。您可以立即看到1/z曲線會(huì)導(dǎo)致靠近近平面的值聚集在一起,而靠近遠(yuǎn)平面的值分布得非常分散。

也很容易看出為什么近平面對深度精度有如此深遠(yuǎn)的影響。拉近近飛機(jī)將使d射程向上飛向飛機(jī)的漸近線1/z曲線,導(dǎo)致更不平衡的值分布:

poYBAGJZPcCAEDeaAAAxrJVNWO0651.jpg

類似地,在這種情況下,很容易看出為什么將遠(yuǎn)平面一直推到無窮遠(yuǎn)沒有那么大的效果。這只是意味著將d范圍稍微向下擴(kuò)展到

latex.php?latex=%5Cfrac%7B1%7D%7Bz%7D%3D0&bg=ffffff&fg=000&s=0&c=20201002

:

pYYBAGJZPcCAGVqKAAAqEEuGMZI778.jpg

浮點(diǎn)深度呢?下圖添加了與具有三個(gè)指數(shù)位和三個(gè)尾數(shù)位的模擬浮點(diǎn)格式相對應(yīng)的記號:

pYYBAGJZPcGAd92cAAArONBl3gE535.jpg

[0 , 1]中現(xiàn)在有 40 個(gè)不同的值——比以前的 16 個(gè)值多了一點(diǎn),但它們中的大多數(shù)都無用地聚集在不需要更高精度的近平面上。

現(xiàn)在廣為人知的一個(gè)技巧是反轉(zhuǎn)深度范圍,將近平面映射到d=1,將遠(yuǎn)平面映射到d=0:

poYBAGJZPcSABP25AAAwCM_xWlo720.jpg

好多了!現(xiàn)在,浮點(diǎn)的準(zhǔn)對數(shù)分布在某種程度上抵消了1/z非線性,使您在近平面的精度與整數(shù)深度緩沖區(qū)相似,并大大提高了其他地方的精度。當(dāng)你向遠(yuǎn)處移動(dòng)時(shí),精度只會(huì)慢慢降低。

反向 -Z 技巧可能已經(jīng)被獨(dú)立地重新發(fā)明了好幾次,但至少可以追溯到 Eugene Lapidous 和 Guofang Jiao (不幸的是,沒有可用的開放訪問鏈接)撰寫的 SIGGRAPH ‘ 99 論文低成本圖形硬件的最佳深度緩沖。最近,馬特·佩蒂尼奧。和布拉諾·凱門以及埃米爾·佩爾松的創(chuàng)造廣闊的游戲世界 SIGGRAPH 2012 年講座在帖子中重新推廣了這一概念。

之前的所有圖表均假定[0 , 1]為投影后深度范圍,這是 D3D 約定。那 OpenGL 呢?

pYYBAGJZPcWAdOQZAAAuJ1_uMZE719.jpg

默認(rèn)情況下, OpenGL 假定投影后深度范圍為[-1 , 1]。這對整數(shù)格式不起作用,但是用浮點(diǎn),所有的精度都在中間被無用地卡住。(該值被映射到[0 , 1]以便稍后存儲(chǔ)在深度緩沖區(qū)中,但這并沒有幫助,因?yàn)榈絒-1 , 1]的初始映射已經(jīng)破壞了該范圍最遠(yuǎn)一半的所有精度。)根據(jù)對稱性,反轉(zhuǎn) -Z 技巧在這里沒有任何作用。

幸運(yùn)的是,在桌面 OpenGL 中,您可以通過廣泛支持的ARB_clip_control擴(kuò)展(現(xiàn)在也是 OpenGL 4 . 5 中的核心glClipControl)來解決這個(gè)問題。不幸的是,在德國,你運(yùn)氣不好。

舍入誤差的影響

The 1/z映射和浮點(diǎn)與整數(shù)深度緩沖區(qū)的選擇是精度故事的重要部分,但不是全部。即使您有足夠的深度精度來表示要渲染的場景,也很容易最終得到由頂點(diǎn)變換過程的算術(shù)錯(cuò)誤控制的精度。

如前所述,厄普丘奇和德斯布倫對此進(jìn)行了研究,并提出了兩項(xiàng)主要建議,以盡量減少舍入誤差:

使用一個(gè)無限遠(yuǎn)的平面。

將投影矩陣與其他矩陣分開,并在頂點(diǎn)著色器中的單獨(dú)操作中應(yīng)用它,而不是將其組合到視圖矩陣中。

Upchurch 和 Desbrun 通過分析技術(shù)提出了這些建議,其基礎(chǔ)是將舍入誤差視為每次算術(shù)運(yùn)算中引入的小隨機(jī)擾動(dòng),并通過轉(zhuǎn)換過程將其跟蹤到一階。我決定使用直接模擬來檢查結(jié)果。

這是我的源代碼 – Python 3 . 4 和 NumPy 。它的工作原理是生成一系列隨機(jī)點(diǎn),按深度排序,在近平面和遠(yuǎn)平面之間線性或?qū)?shù)間隔。然后,它使用 32 位浮點(diǎn)精度將點(diǎn)通過視圖和投影矩陣以及透視分割,并可選地將最終結(jié)果量化為 24 位整數(shù)。

最后,它遍歷序列并計(jì)算兩個(gè)相鄰點(diǎn)(最初具有不同深度)由于映射到相同深度值而變得不可區(qū)分或?qū)嶋H交換順序的次數(shù)。換句話說,它測量深度比較錯(cuò)誤發(fā)生的速率,這與不同場景下的 Z- 戰(zhàn)斗等問題相對應(yīng)。

以下是近距離= 0 . 1 ,遠(yuǎn)距離= 10K ,線性間隔深度為 10K 時(shí)獲得的結(jié)果。(我也嘗試了對數(shù)深度間距和其他近/遠(yuǎn)比率,雖然詳細(xì)數(shù)字各不相同,但結(jié)果的總體趨勢是相同的。)

在表中,“不可區(qū)分”表示不可區(qū)分(兩個(gè)相鄰深度映射到相同的最終深度緩沖區(qū)值),“交換”表示兩個(gè)相鄰深度交換順序。

很抱歉沒有繪制這些,但是有太多的維度,使其易于繪制!不管怎樣,看看這些數(shù)字,一些普遍的結(jié)果是清楚的。

在大多數(shù)設(shè)置中,浮點(diǎn)深度緩沖區(qū)和整數(shù)深度緩沖區(qū)之間沒有區(qū)別。算術(shù)誤差淹沒了量化誤差。這在一定程度上是因?yàn)?float32 和 int24 在[0 . 5 , 1]中具有幾乎相同大小的 ulp (因?yàn)?float32 具有 23 位尾數(shù)),因此實(shí)際上在絕大多數(shù)深度范圍內(nèi)幾乎沒有額外的量化誤差。

在許多情況下,分離視圖矩陣和投影矩陣(遵循 Upchurch 和 Desbrun 的建議)確實(shí)會(huì)帶來一些改進(jìn)。雖然這并沒有降低總體錯(cuò)誤率,但它似乎確實(shí)將互換變成了無法區(qū)分的東西,這是朝著正確方向邁出的一步。

一個(gè)無限遠(yuǎn)的平面在錯(cuò)誤率上的差別很小。 Upchurch 和 Desbrun 預(yù)測絕對numerical誤差會(huì)減少 25% ,但這似乎并沒有轉(zhuǎn)化為comparison誤差率的降低。

不過,以上幾點(diǎn)實(shí)際上并不重要,因?yàn)檫@里真正重要的結(jié)果是:反向 Z 映射基本上是神奇的。過來看:

在本測試中,帶浮動(dòng)深度緩沖器的反向 -Z 給出零錯(cuò)誤率?,F(xiàn)在,如果您繼續(xù)收緊輸入深度值的間距,當(dāng)然可以使其產(chǎn)生一些錯(cuò)誤。不過,與其他任何選項(xiàng)相比,帶浮點(diǎn)數(shù)的反向 Z 更精確,令人可笑。

帶整數(shù)深度緩沖區(qū)的反向 -Z 與任何其他整數(shù)選項(xiàng)一樣好。

反向 Z 消除了預(yù)合成與單獨(dú)視圖/投影矩陣以及有限與無限遠(yuǎn)平面之間的區(qū)別。換句話說,使用 reversed-Z ,您可以將投影矩陣與其他矩陣組合,并且可以使用您喜歡的遠(yuǎn)平面,而不會(huì)影響精度。

我認(rèn)為這里的結(jié)論是明確的。在任何透視投影情況下,只需使用帶反轉(zhuǎn) Z 的浮點(diǎn)深度緩沖區(qū)!如果不能使用浮點(diǎn)深度緩沖區(qū),則仍應(yīng)使用 reversed-Z 。它不是解決所有精度問題的靈丹妙藥,尤其是在構(gòu)建包含極端深度范圍的開放環(huán)境時(shí)。但這是一個(gè)很好的開始。

關(guān)于作者

Nathan Reed自 2008 年以來一直從事游戲和游戲相關(guān)領(lǐng)域的計(jì)算機(jī)圖形編程工作。目前,他致力于 Adobe 的 3D 和沉浸式工具。以前,他在 343 工業(yè)(光環(huán)無限)、索尼的吸盤沖壓工作室(臭名昭著的筑島幽靈)和 NVIDIA 工作。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5309

    瀏覽量

    106377
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86734
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用協(xié)議分析儀進(jìn)行數(shù)據(jù)分析與可視化

    分析與可視化需結(jié)合工具功能與業(yè)務(wù)場景: 快速診斷:依賴內(nèi)置統(tǒng)計(jì)和IO Graph。 深度分析:導(dǎo)出數(shù)據(jù)至Python/R進(jìn)行統(tǒng)計(jì)建模。 長期監(jiān)控:集成至SIEM/APM系統(tǒng)實(shí)現(xiàn)自動(dòng)。 通過合理選擇工具鏈(如
    發(fā)表于 07-16 14:16

    結(jié)構(gòu)可視化:利用數(shù)據(jù)編輯器剖析數(shù)據(jù)內(nèi)在架構(gòu)?

    動(dòng)路徑,為數(shù)據(jù)驅(qū)動(dòng)的決策提供堅(jiān)實(shí)基礎(chǔ)。借助數(shù)據(jù)編輯器,企業(yè)還能更便捷地對可視化呈現(xiàn)的數(shù)據(jù)進(jìn)行編輯、調(diào)整,以滿足不同分析場景的需求,進(jìn)一步優(yōu)化數(shù)據(jù)管理流程。 以神經(jīng)網(wǎng)絡(luò)的可視化展示為例,在深度學(xué)習(xí)領(lǐng)域,神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 05-07 18:42 ?206次閱讀

    VirtualLab Fusion應(yīng)用:3D系統(tǒng)可視化

    描述和F-Theta透鏡的應(yīng)用示例。 光學(xué)系統(tǒng)的3D-可視化 VirtualLab Fusion提供的工具可以實(shí)現(xiàn)光學(xué)系統(tǒng)的3D可視化,因此可以用于檢查元件的位置,以及快速了解系統(tǒng)內(nèi)部的光傳播情況
    發(fā)表于 04-30 08:47

    可視化組態(tài)物聯(lián)網(wǎng)平臺(tái)是什么

    可視化組態(tài)物聯(lián)網(wǎng)平臺(tái)是物聯(lián)網(wǎng)技術(shù)與組態(tài)技術(shù)相結(jié)合的產(chǎn)物,是通過提供豐富的圖形組件和可視化元素,讓用戶能夠以直觀、便捷的方式對物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行監(jiān)控、分析和管理的平臺(tái)。以下是其具體介紹: 定義 組態(tài)
    的頭像 發(fā)表于 04-21 10:40 ?294次閱讀

    VirtualLab Fusion中的可視化設(shè)置

    摘要 VirtualLab Fusion中的全局選項(xiàng)對話框可以輕松定制軟件的外觀和感覺。還可以保存和加載全局選項(xiàng)文件,以便可以輕松地將偏好設(shè)置從一個(gè)設(shè)備轉(zhuǎn)移到另一個(gè)設(shè)備。本文檔說明了與可視化和結(jié)果
    發(fā)表于 02-25 08:51

    VirtualLab Fusion應(yīng)用:光波導(dǎo)k域布局可視化(“神奇的圓環(huán)”)

    特定光波導(dǎo)布局的光導(dǎo)和耦合條件。 概念 方向轉(zhuǎn)換器計(jì)算器 可以通過“開始”>“計(jì)算器”找到方向轉(zhuǎn)換器計(jì)算器,這有助于演示指定角度的不同方式。 k域可視化 k域可視化:平面波的傳播
    發(fā)表于 02-21 08:53

    七款經(jīng)久不衰的數(shù)據(jù)可視化工具!

    較高,運(yùn)行復(fù)雜項(xiàng)目時(shí)可能需要高性能設(shè)備;定制功能相對有限。 3. Power BI 優(yōu)點(diǎn):與微軟生態(tài)系統(tǒng)(如Excel、SharePoint、Azure等)深度集成,提供強(qiáng)大的數(shù)據(jù)分析與可視化
    發(fā)表于 01-19 15:24

    光學(xué)系統(tǒng)的3D可視化

    **摘要 ** 為了從根本上了解光學(xué)系統(tǒng)的特性,對其組件進(jìn)行可視化并顯示光的傳播情況大有幫助。為此,VirtualLab Fusion 提供了顯示光學(xué)系統(tǒng)三維可視化的工具。這些工具還可用于檢查元件
    發(fā)表于 01-06 08:53

    什么是大屏數(shù)據(jù)可視化?特點(diǎn)有哪些?

    大屏數(shù)據(jù)可視化是指通過大屏幕展示大量數(shù)據(jù)和信息,以直觀、可視化的方式幫助用戶理解和分析數(shù)據(jù)。這種展示方式通常用于展示復(fù)雜的數(shù)據(jù)集、實(shí)時(shí)監(jiān)控系統(tǒng)、企業(yè)管理儀表盤等。以下是關(guān)于 大屏數(shù)據(jù)可視化 的詳細(xì)
    的頭像 發(fā)表于 12-16 16:59 ?686次閱讀

    如何找到適合的大屏數(shù)據(jù)可視化系統(tǒng)

    選擇合適的大屏數(shù)據(jù)可視化系統(tǒng)是企業(yè)或組織在數(shù)字轉(zhuǎn)型過程中至關(guān)重要的一步。一個(gè)優(yōu)秀的大屏數(shù)據(jù)可視化系統(tǒng)能夠?qū)崟r(shí)呈現(xiàn)關(guān)鍵業(yè)務(wù)數(shù)據(jù),提升決策效率,同時(shí)提供直觀、易于理解的視覺呈現(xiàn),助力企業(yè)洞察數(shù)據(jù)背后
    的頭像 發(fā)表于 12-13 15:47 ?487次閱讀

    智慧能源可視化監(jiān)管平臺(tái)——助力可視化能源數(shù)據(jù)管理

    博達(dá)可視化大屏設(shè)計(jì)平臺(tái)在智慧能源領(lǐng)域的價(jià)值體現(xiàn)在實(shí)時(shí)監(jiān)控、數(shù)據(jù)可視化、決策支持和效率提升等方面。借助該平臺(tái),企業(yè)可以輕松搭建智慧能源類可視化大屏,更加精確和高效地管理生產(chǎn)和生活,實(shí)現(xiàn)能源的可持續(xù)發(fā)展。
    的頭像 發(fā)表于 11-29 10:00 ?950次閱讀
    智慧能源<b class='flag-5'>可視化</b>監(jiān)管平臺(tái)——助力<b class='flag-5'>可視化</b>能源數(shù)據(jù)管理

    智慧樓宇可視化的優(yōu)點(diǎn)

    智慧樓宇可視化是指通過數(shù)據(jù)可視化技術(shù)來展示和分析樓宇的各種數(shù)據(jù),為樓宇管理者和用戶提供直觀、清晰的信息展示和決策支持。以下是智慧樓宇可視化的優(yōu)點(diǎn),詳細(xì)介紹其在樓宇管理和運(yùn)營中的重要作用: 1.實(shí)時(shí)
    的頭像 發(fā)表于 11-19 14:25 ?479次閱讀

    智慧地鐵站可視化建設(shè)的意義

    隨著城市規(guī)模的不斷擴(kuò)大和人口數(shù)量的增加,地鐵成為現(xiàn)代城市重要的公共交通方式之一。為了提高地鐵運(yùn)營效率、乘客體驗(yàn)和安全管理水平,智慧地鐵站可視化建設(shè)逐漸成為發(fā)展趨勢。本文古河云科技將深入探討 智慧
    的頭像 發(fā)表于 07-26 14:16 ?470次閱讀

    三維可視化運(yùn)用的主要技術(shù)

    三維可視化技術(shù)是一種強(qiáng)大的工具,可用于呈現(xiàn)復(fù)雜的數(shù)據(jù)和概念,使人們能夠更直觀地理解信息。在當(dāng)今數(shù)字化時(shí)代,三維可視化已經(jīng)成為許多領(lǐng)域中不可或缺的技術(shù),包括工程、醫(yī)學(xué)、地理信息系統(tǒng)、游戲開發(fā)等。本文將
    的頭像 發(fā)表于 07-19 13:56 ?639次閱讀