对于支持uv流动的shader,在手机上流动的时间长了以后,可能会出现卡顿的情况。
可能的原因之一是,uvOffset随时间增加而增大,一段时间之后,uvOffset值过大,又定义为half或者fixed,导致uvOffset的小数部分精度不够。
解决办法很简单,计算uvOffset时用float,然后截取小数部分,再加到最终结果中,最终结果用half或者fixed。实例代码如下:
float2 scaledUV = texcoord * tiling;
float2 uv_offset = speed * _Time.x;
uv_offset = frac(uv_offset);
fixed2 finalUV = fixed2(scaledUV + uv_offset);