Tiling / UV Scalling issue

I have a game where the ground is represented by a very large plane. It is a flying game so the ground is seen from far distances as well as up close. When up close the texture appears to jump/flicker alot, and i’ve read this is cause by the UV scale. This is just a simple plane in unity and wasn’t created in another program. I’m not sure how to fix this as I can’t adjust UV settings with out changing the scale.

Any ideas on how to fix this?

You sure this isn’t just an issue of using bilinear instead of trilinear filtering?

(Also, don’t use a Unity plane. It’s 96 wasted vertices, which is especially wasteful on the iPhone.)

From everything i read it seems to be from overloading UV values, if it isn’t how do i use trilinear filtering? is this a global setting, or does it have to do with the material or shader.

Also, how would i go about getting a low vert plane? would i have to make one in a 3d program?

I’d like to see some of your sources on this; I don’t believe I’ve run into the problem. I’d also like to see your problem in action (screenshot/video).

http://unity3d.com/support/documentation/Components/class-Texture2D.html
(I know it looks a little different in Unity iPhone but you still select the texture in the project window and then change the filtering setting in the Inspector.)

That’s the easiest way. You can also create one with a script.

Thanks, i’ll try the trilinear setting and post I video of the problem if that doesn’t work. It will be a few days before I’m back at my computer. I’ll update then.

Changing to trilinear didn’t help. Here is a post on the UV ranges.

http://forum.unity3d.com/viewtopic.php?t=19685

For my plane the tiling needs to be set to about 5000x5000, it works fine in unity, it just messes up on the device. I could post some screens but that doesn’t really show the flickering of the texture. I don’t know of a good way to video the device itself, I guess I could just use a camera.

-edited to add link

That’s a lot. Assumedly you’ll only see a very small portion of that at once; I’d recommend breaking up a larger mesh into multiple materials, all with the same settings, but Unity iPhone still registers submeshes as draw calls, even if they are outside the visible frustum. If you try to use separate meshes, the seams will be wonky. I don’t have a good solution for you. I’ve never done anywhere near that amount of tiling.

I don’t see how you’d do it any other way.

I think i’ve got workable solution. I still need my huge plane, it acts as horizon and background, but directly under the main charater, i’m shuffling a series of planes along with him and have them just over the main surface so these 1x1 tiles display fine and hide the worst of the flickering of the large one when up close. I actually may make the larger plain a solid color, since its just a texture of green grass.

Thanks for the tip on the unity plane, i was just staring to put quite a few planes to hold some decoration graphics.

3D rasterization hardware has very specific limits for UV coordinates because deep down in the HW they can be represented by fixed point numbers or special format “floats”. You often see this when tiling textures or if you have a texture matrix that generates “large” UV coordinates (funky projections). The symptoms are much like you describe - textures that jerk, lurch or look sheared or even blocky. The actual value ranges that the vendors recommend is often in their developer documentation (see PowerVRInsider.com) but as a ballpark - assume there are <= 16 bits of UV precision. Also assume that the UV iterator can access each texel of a maximum size texture so on iPhone it’s 1024x1024 (that’s 10 bits = 2^10) so with no repeat addressing you get about 10.6 fixed point. One repeat would take 11.5 fixed point… etc. This is merely back-of the envelope, real HW is complex, but that should give you a good idea of how it acts.

Short answer - try not to repeat/tile UV coordinates more than a very few times or so IMO. Either make smaller UV coordinates in your modeling package, generate them on the fly into the verts, or use a texture matrix to generate them (but in either of those cases you must “wrap” the coordinates yourself).

Hope this helps!

we are also facing this kind of issue on IOS devise. In over case we make racing game for IOS devise and we already make many tracks for that. now when we build for devise. Texture start blurry when player cover around 1 km and when player reach to end of that track its look too much blurry. We tile our road texture in 3d software so developer do not need to add till in unity.
Is that any other solution without overlapping textures? For that we have to add more cuts in mesh. Its increase our game mesh budget.