3

我做了一些搜索,但我发现的唯一结果是关于抗锯齿及其背后的机制。

我想为除抗锯齿以外的东西使用多样本缓冲区。具体来说,我想到的是一种与顺序无关的透明度形式,在每个样本中存储不同的颜色和深度值(理想情况下是最接近相机的 N 个片段)。

这甚至可能吗?以前有没有做过,如果有,怎么做?即使有可能,它是否比仅分配另一个 N 帧缓冲区更节省内存?

如果这样的事情需要计算着色器或 OpenCL,那很好,我只是想知道它是否可能首先出现。

这个问题并不特定于 OpenGL 或 DirectX,因为在任何一种情况下硬件都是相同的。

PS。请不要只将我指向其他与顺序无关的透明度方法,这个问题专门关于多样本缓冲区是否可用于非典型方式。

4

1 回答 1

1

最大的问题是系统被硬编码为使用多重采样,嗯,多重采样,而不是用于存储任意数据。

通过使用gl_SampleMaskoutput,您可以将片段着色器的结果定向到多重采样缓冲区的特定样本。然后,您可以使用着色器执行自定义多重采样解析,以便进行透明度排序或您计划在此处执行的任何操作。

理论上,当然。然而,在实践中,gl_SampleMask将与光栅化器为该片段计算的样本掩码进行逻辑与运算。因此,如果您将 设置gl_SampleMask为写入片段未覆盖的特定样本,则不会写入任何内容。

你对此无能为力。即使显式激活每样本片段着色器评估也无济于事,因为系统仍将根据您渲染的几何图形计算和使用该蒙版。

所以一般来说,不,除了抗锯齿之外,你可以使用多重采样的东西不多。

于 2015-12-08T20:33:12.647 回答