2013-08-31 65 views
1

我一直在閱讀關於從深度緩衝區重構世界空間中片段的位置,但我正在考慮將位置存儲在高精度三通道位置緩衝區中。這樣做會比從深度緩衝區解壓縮位置更快嗎?從深度重建位置的成本是多少?深度vs位置

+0

也許我錯過了一個細節或者它可能被省略了,但是我在3維空間中的位置與1維空間的深度並不相同。您無法從1維數據重建3D座標。它就像問我住在哪裏,我回應了20英里的機場。 20英里的方式......在2D空間中,深度等於圓的半徑。 – mwjohnson

+1

@mwjohnson給定逆向投影矩陣和深度紋理上樣本位置的座標,您可以從深度重建位置。對不起,我沒有說清楚。它有時以延遲着色方式完成。 – Abaab

+1

在桌面GPU上,根據深度重建位置是最佳選擇。所有的商業圖形引擎都這樣做,它節省了大量內存帶寬。 –

回答

4

這個問題的原因有兩個基本無法回答:

  1. 有「重建從深度位置」的幾種方式,具有不同的性能特點。

  2. 它是硬件依賴。

最後一點很重要。您基本上將GL_RGBA16F的紋理獲取性能(至少)與GL_DEPTH24_STENCIL8獲取的性能進行比較,然後進行一些ALU計算。基本上,您要問的是,每個片段獲取32位的成本(24x8獲取與RGBA16F獲取之間的差異)是否等同於ALU計算。

這會隨着各種事情而改變。提取內存,紋理緩存大小等等的性能都會對紋理獲取性能產生影響。並且ALU的速度取決於一次將有多少人在飛行(即:着色單元的數量)以及時鐘速度等等。

總之,這裏有太多的變數,知道先驗答案。

這就是說,考慮歷史。

在着色器最早的日子裏,回到GeForce 3天,人們需要重新規範從頂點着色器傳遞過來的法線。他們通過使用立方圖來做到這一點,而不是通過對法線進行數學計算。爲什麼?因爲速度更快。

今天,幾乎沒有沒有通用可編程GPU硬件,在桌面或移動空間中,立方體貼圖紋理獲取比點乘積,倒數平方根和矢量乘法更快。長期計算性能超過內存訪問性能。

所以我會建議與歷史一起去尋找quick means of computing it in your shader

+2

是的,我記得當我離開這個行業一段時間後被人嘲笑,並詢問正常化立方體地圖發生了什麼:)我們走過了一段很長的路。回顧一下,有趣的是,從查找紋理中獲取的代價遠遠小於一個非常重要的操作(包括'DP3','RSQ'和'MUL'的一系列指令)。 –