我正在Cg
使用Unity3D
.
我正在尝试使用fmod函数沿轴重复纹理(基本上与通过在Material
with中设置纹理比例可以达到的效果相同TextureWrapMode.Repeat
)。
这是fragment shader
可以重现错误的代码:
half4 frag (v2f i) : COLOR
{
float u_sample_coord = fmod(i.uv.x ,period) /period;
half4 col =tex2D(myTexture,float2(u_sample_coord, i.uv.y));
return col;
}
基本上它似乎可以工作,但它会产生某种与 fmod 函数的 0 相对应的混叠(条形图案)。这是一些屏幕截图:
上图显示了纹理如何正确重复。这是出现的条带混叠模式的放大图:
我试图调试它,但我无法弄清楚到底发生了什么。任何人都可以告诉我问题是什么以及最终如何解决?
编辑:我发现禁用 mipmap 生成可以解决这个问题。顺便说一句,我想使用 mipmap 来避免在距离增加时出现缩小锯齿问题。有人有什么想法吗?