This is caused by large jumps in the UV coordinates which the GPU hardware automatically assumes means there needs to be a mip map transition. Due to the frac. The GPU uses the slope of the UVs in screen space to determine mips, so when it sees the UVs go from 0 to 1 suddenly it thinks that pixel has a steep slope (ie, the same as a wall almost perpendicular to you).
You can work around this using ComputeMipLevel but thats a pain since you need to enter the texture size.
A better way is to use the code “SampleGrad”. First make a Custom expression node.
Add an input called “Tex” and hook up your texture there as a texture object. Also add an input called “UV”.
I will probably make this a material function at some point but I have been trying to get the rendering guys to make it a proper code node first. It’s like a game of chicken “Do it right or I will do it crappy at which point you will have to do it”.
One should be the actual UVs to use on the texture (with your frac) and the other should be the same tiling factor but without frac, and that is the one to sample DDX and DDY on.
Also if you convert your texture to a “texture object parameter” you can still override it using a material instance. There should be no limitation there.