0

我正在尝试将透明对象渲染到缓冲区中。我想粗略估计从近剪切平面到网格中每个片段的距离总和(不仅仅是最近的片段)。我知道读取(当前总数)和写入(新总数)到 SIMD 架构中的缓冲区的并发问题,但我正在尝试找到一种方法来做到这一点。

为了清楚起见,我将包含一些 ASCI-art 来说明我的问题:

   │
┌──┼──┐A
│┌─┼──┘B
│└─┼──┐C
└──┼──┘D
   │
near-clipping plane

所以,这条线代表一个屏幕像素,&在那个像素内,我想记录一个值是所有距离的总和:A、B、C和D。(而不仅仅是D,就像在正常的z -缓冲。)

关于如何使用着色器完成此任务的任何想法?WebGL 会更好,但直接的 OpenGL 也是一种选择。

4

1 回答 1

3

您可以使用深度测试禁用进行渲染,这是一种将片段深度作为片段颜色发出的着色器,并使用加法混合来产生深度总和输出。然而,最有可能希望获得平均值。因此,您应该发出 a vec2(1/2**bit_depth, depth),以便在一个通道中,加法混合产生求和的表面数量,而另一个通道得到总和,以便您可以在第二步中确定平均值。

于 2014-07-15T22:19:45.340 回答