Texture looks low-res/chunky/pixelated on mobile

My texture atlas gets a very low-resolution look if I build on certain mobile devices.

This is the correct look, taken from Galaxy Tab (it looks this way in the editor too):

alt text

This is what it looks like on the iPhone4 and the Galaxy S

alt text

It looks as if the texture was reduced to 256256px with point interpolation, although the texture is actually 10241024px, with bilinear interpolation and no mipmaps.

Any ideas why this could be happening?

Check the quality settings for the format you’re exporting to. They may be different from the settings used in the editor. By default the mobile platforms are set to a lower quality level which could reduce your texture size depending on the settings.

Ok, damn.

The problem was actually the precision of the UV coordinates in the shader. I only forgot that I’m using another shader on mobile than in the viewport. Changed the following lines in the correct shader:

struct Input {
   fixed2 uv_MainTex;
};

to

struct Input {
   float2 uv_MainTex;
};

and the problem was gone. Apparently fixed is translated to some really low precision variable on older hardware.

Thank you!

I know this thread is old but I wanted to add another answer in here. I had the same problem and it turned out that I had “Generate Mip Maps” checked for some specific Sprites. The moment I unchecked it it looked fine on mobile.