深度与位置

时间:2013-08-31 02:38:38

标签: opengl glsl lwjgl depth-buffer

我一直在阅读从深度缓冲区重建片段在世界空间中的位置,但我正考虑将位置存储在高精度三通道位置缓冲区中。这样做会比从深度缓冲区解压缩位置更快吗?从深度重建位置的成本是多少?

1 个答案:

答案 0 :(得分:4)

这个问题基本上无法解决,原因有两个:

  1. “深度重建位置”有多种方式,具有不同的表现特征。

  2. 非常依赖于硬件。

  3. 最后一点很重要。您实质上是将GL_RGBA16F(至少)的纹理提取性能与GL_DEPTH24_STENCIL8提取的性能进行比较,然后进行一些ALU计算。基本上,你要问的是,每个片段增加32位的成本(24x8 fetch和RGBA16F fetch之间的差异)是否等同于ALU计算。

    随着各种事情发生变化。获取内存,纹理缓存大小等的性能都会对纹理获取性能产生影响。 ALU的速度取决于一次飞行的次数(即:着色单元的数量),以及时钟速度等。

    简而言之,这里有太多的变量来先知道答案。

    话虽如此,请考虑历史。

    在着色器的早期阶段,回到GeForce 3天后,人们需要重新规范化从顶点着色器传递的法线。他们通过使用立方体贴图来做到这一点,而不是通过正常的数学计算。为什么?因为它更快。

    今天,在桌面或移动空间中,几乎没有没有常见的可编程GPU硬件,其中立方体贴图纹理提取比点积,倒数平方根和矢量乘法更快。长期的计算性能超过了内存访问性能。

    所以我建议选择历史并找到quick means of computing it in your shader

相关问题