我一直在阅读关于从深度缓冲区重构世界空间中片段的位置,但我正在考虑将位置存储在高精度三通道位置缓冲区中。这样做会比从深度缓冲区解压缩位置更快吗?从深度重建位置的成本是多少?深度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上,根据深度重建位置是最佳选择。所有的商业图形引擎都这样做,它节省了大量内存带宽。 –