2011-12-15 33 views
1

有没有方法让着色器查询纹理读取中像素块的总和/平均值,而不是查找单个值?我在Cg工作,但欢迎任何示例和搜索条件。着色器可以对纹理中的像素块/区域进行采样吗?

我特指内置的方式,不在我的着色器中手动循环。

+0

你可以建立一个mipmap并在特定的水平上采样纹理吗?正方形块的三线采样是必须的,但我不知道如何使用各向异性过滤来对非方块进行采样。 – Lyth 2011-12-15 14:55:34

+0

MipMaps可能是一个很好的电话。我确实希望以较低的分辨率对纹理进行采样 - 唯一需要注意的就是渲染纹理,我正在使用post = process效果,然后将输出转换为带有后期着色器的全屏四边形。 – 2011-12-15 18:03:33

回答

4

不是。

您可以做的最好的是ARB_texture_gather extension(核心在GL 4.0 +)/ D3D10.1's gather function

这允许您从2x2块纹素中取出,但一次只能得到一个组成的纹理。此外,纯粹的扩展/ D3D10.1版本可以只有获取纹理的红色组件。 GL 4.0/D3D11.0版本可以获取这四个组件中的任何一个,但每次调用只会获取一个

当然,你必须自己对2x2块进行平均。

唯一真正可行的选择是做Lyth说的:为你的纹理生成mipmap并从它们取样。纹理访问函数可以从特定的mipmap中获取,该mipmap表示特定像素范围的平均值。当然,这些也是有限的。

相关问题