MaxTextureRepeat限制在什么时候发挥作用?

时间:2008-10-13 02:27:51

标签: directx direct3d textures hlsl shader

在Direct3D下执行像素着色器时,MaxTextureRepeat强加的纹理坐标限制只会在调用纹理查找函数(如Tex2D())时出现问题,或者在纹理坐标被访问的任何时候都会发挥作用。着色器?

我想知道是否可以通过在纹理坐标上调用像frac()之类的东西来避免MaxTextureRepeat限制,然后再将它们传递给纹理查找函数。

1 个答案:

答案 0 :(得分:0)

纹理坐标是原生插补器精度。在支持像素着色器2.0的硬件上,这至少是24位浮点(或者可能是32位,不确定)。在内部,像素着色器中的计算必须至少为24位浮点。大多数现代GPU以32位浮点精度运行。

MaxTextureRepeat是纹理采样硬件的功能。

所以,是的,如果你没有遇到浮点精度限制,那么在采样之前限制范围是避免纹理重复限制的一种方法。

然而,当frac从0变为1时,你将获得大的渐变,因此在那些地方GPU将需要使用非常低分辨率的mip级别。根据您的具体情况,这可能不是问题;但这是潜在问题的一个方面。