着色器是否可以查询纹理读取中像素块的总和/平均值,而不是查找单个值?我在Cg工作,但欢迎任何示例和搜索术语。
我特指的是内置方式,而不是在我的着色器中手动循环。
答案 0 :(得分: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表示特定像素范围的平均值。当然,这些也是有限的。