2012-01-14 141 views
8

我对理解多采样如何工作非常感兴趣。我已经找到了关于如何启用或使用它的大量文献,但关于实现反锯齿渲染的确实功能的信息非常少。我在很多地方发现的信息是相互冲突的信息,只会让我更加困惑。多重采样如何真正起作用?

请注意,我知道如何启用和使用多重采样(我其实已经使用它),我不知道是什么样的数据真的进入了多次采样renderbuffers /纹理,这些数据是如何在渲染管道中使用。

我可以很好地理解超采样如何工作,但多采样仍然有一些我想了解的模糊区域。

这里是规格说什么:(OpenGL的4.2)

像素采样值,包括颜色,深度和模板值,被存储在该 缓冲液(在多重采样缓存)。样本包含每个片段颜色的单独颜色值。

...

在多重采样渲染像素片段的内容有两种方式改变 。首先,每个片段包含一个带有SAMPLES位的覆盖值。

...

其次,每个片段包括样本深度值和集合相关联 的数据,而不是单一的深度值,并设置被保持在 单样本呈现模式相关联的数据的。

所以,每个样本包含一个不同的颜色,覆盖位和深度。与通常的超级取样有什么不同?看起来像一个“加权”的超采样对我来说,其中每个最终的像素值是由其样本的覆盖率值而不是简单的平均值确定的,但我对此非常不确定。样本级别的纹理坐标如何?

如果我在RGBF多重采样纹理中存储法线,我会在多边形的边缘读回“antialiased”(即接近0)吗?

片段着色器每个片段调用一次,除非它使用gl_SampleID,glSampleIn或具有“样本”存储限定符。片段着色器如何在每个片段中被调用一次并获得反锯齿渲染?

+0

NVIDIA解释:http://www.nvidia.com/object/feature_hraa.html – 2012-01-14 10:18:54

+0

抱歉,但此链接完全不提供有关ms如何工作的信息,您可以从维基百科获得更好的信息 – user815129 2012-01-14 10:25:42

+0

然后,2007年斯坦福CS讲座:http://graphics.stanford.edu/courses/cs248-07/lectures/2007.10.11%20CS248-06%20Multisample%20Ai1iasing/2007.10.11 %20CS248-06%20Multisample%20Airiiasing.ppt,太糟糕了,它没有提及任何来源。 – 2012-01-14 10:32:47

回答

5

的OpenGL在Silicon Graphics公司系统:

http://www-f9.ijs.si/~matevz/docs/007-2392-003/sgi_html/ch09.html#LE68984-PARENT

提到:当您使用多重采样和回读的颜色,你会得到解决的颜色值(也就是,平均样品)。当您回读模板或深度时,您通常会取回单个样本值而不是平均值。此样本值通常是最接近像素中心的值。

还有OpenGL站点的这个技术规范(1994)。它解释的全部细节就要做如果启用MULTISAMPLE_SGIS:http://opengl.org/registry/specs/SGIS/multisample.txt

又见此相关的问题:How are depth values resolved in OpenGL textures when multisampling?

而这个问题的答案,在这里建议GL_MULTISAMPLE_ARB:where is GL_MULTISAMPLE defined?。 GL_MULTISAMPLE_ARB(2002)的规格如下:http://www.opengl.org/registry/specs/ARB/multisample.txt

+0

很好,谢谢你参考多抽样问题 – user815129 2012-01-14 12:25:04