我一直在閱讀關於從深度緩衝區重構世界空間中片段的位置,但我正在考慮將位置存儲在高精度三通道位置緩衝區中。這樣做會比從深度緩衝區解壓縮位置更快嗎?從深度重建位置的成本是多少?深度vs位置
深度vs位置
回答
這個問題的原因有兩個基本無法回答:
有「重建從深度位置」的幾種方式,具有不同的性能特點。
它是很硬件依賴。
最後一點很重要。您基本上將GL_RGBA16F
的紋理獲取性能(至少)與GL_DEPTH24_STENCIL8
獲取的性能進行比較,然後進行一些ALU計算。基本上,您要問的是,每個片段獲取32位的成本(24x8獲取與RGBA16F獲取之間的差異)是否等同於ALU計算。
這會隨着各種事情而改變。提取內存,紋理緩存大小等等的性能都會對紋理獲取性能產生影響。並且ALU的速度取決於一次將有多少人在飛行(即:着色單元的數量)以及時鐘速度等等。
總之,這裏有太多的變數,知道先驗答案。
這就是說,考慮歷史。
在着色器最早的日子裏,回到GeForce 3天,人們需要重新規範從頂點着色器傳遞過來的法線。他們通過使用立方圖來做到這一點,而不是通過對法線進行數學計算。爲什麼?因爲速度更快。
今天,幾乎沒有沒有通用可編程GPU硬件,在桌面或移動空間中,立方體貼圖紋理獲取比點乘積,倒數平方根和矢量乘法更快。長期計算性能超過內存訪問性能。
所以我會建議與歷史一起去尋找quick means of computing it in your shader。
是的,我記得當我離開這個行業一段時間後被人嘲笑,並詢問正常化立方體地圖發生了什麼:)我們走過了一段很長的路。回顧一下,有趣的是,從查找紋理中獲取的代價遠遠小於一個非常重要的操作(包括'DP3','RSQ'和'MUL'的一系列指令)。 –
- 1. 深度誤差vs基線
- 2. Android MediaRecorder:如何設置位深度?
- 3. 從深度重建片段位置
- 4. 使用opencv從深度重建位置
- 5. 線性深度到世界位置
- 6. AVRecorder不能設置位深度
- 7. Vulkan深度緩衝區位置重構
- 8. 顏色深度位?
- 9. 將16位深度CvMat *轉換爲8位深度
- 10. 減少圖像位深度
- 11. 圖像位深度值
- 12. 用深度繪製位圖
- 13. opengl深度測試如何使用24位深度緩衝區?
- 14. 如何知道matlab中24位深度圖像的深度值
- 15. 如何表示從16位顏色深度到18位顏色深度?
- 16. 如何將16位深度的圖像轉換爲8位深度
- 17. 迭代加深vs深度優先搜索
- 18. 設置遞歸深度
- 19. 位置VS的GeoPoint VS 1E6 VS充電
- 20. 絕對vs相對位置寬度和高度
- 21. css位置:相對vs位置:絕對
- 22. PHP頭位置:../location VS $ _ SERVER [DOCUMENT_ROOT] /位置
- 23. SSL速度:128 vs 256位
- 24. WebGL着色器z位置未用於深度計算
- 25. AS3根據y位置和靜止物體改變深度
- 26. 如何通過Windows API設置.wav文件的位深度? (C#)
- 27. 從線性深度重建世界位置
- 28. 基於MC位置的複雜深度分類問題
- 29. 從深度重構世界位置是錯誤的
- 30. 獲取深度在顏色位置,Kinect SDK
也許我錯過了一個細節或者它可能被省略了,但是我在3維空間中的位置與1維空間的深度並不相同。您無法從1維數據重建3D座標。它就像問我住在哪裏,我回應了20英里的機場。 20英里的方式......在2D空間中,深度等於圓的半徑。 – mwjohnson
@mwjohnson給定逆向投影矩陣和深度紋理上樣本位置的座標,您可以從深度重建位置。對不起,我沒有說清楚。它有時以延遲着色方式完成。 – Abaab
在桌面GPU上,根據深度重建位置是最佳選擇。所有的商業圖形引擎都這樣做,它節省了大量內存帶寬。 –