我有一个无缝的纹理。
在碎片整理器中,我使用一个函数在一定程度上从1.0跳到0.0来计算纹理坐标UVproc(这里纹理应该很好地重复)。
问题是在这个接缝处,查找似乎从最小的mipmap级别返回像素值。
如果我是debugoutput
out = vec4(dFdx(UVproc.x), dFdy(UVproc.y),0,1);
然后我可以看到,在这些像素处,这些纹理坐标的有限差异非常高,因此访问了一个小的mipmap级别(有意义 - 因为在这些像素处从1跳到0,有限差异将是大)。
如果我手动只使用textureLod()访问mipmaplevel 0,那么我没有这个问题,但我也松开了mipmapping,一切都变得颗粒状。
所以问题是:
如果在片段着色器中以程序方式计算texturecoordinates(在0-1范围内),如何避免可见的mipmap相关接缝?
答案 0 :(得分:1)
您应该使用渐变纹理采样,手动设置衍生物。这是一个功能:
gvec textureGrad(gsampler sampler, vec texCoord, gradvec dTdx, gradvec dTdy);