My Shader doesn't sample beyond 4 MIP levels on iOS - why is this?


  • I am finding that my MIP maps seem to be missing when I sample them in Metal or GLES on an Apple iOS device. 


The issue you're finding is as designed. On iOS, GLES gets clamped (GL_TEXTURE_MAX_LEVEL=3), which prevents looking past the fourth MIP level in compressed Textures. This is due to the minimum MIP size being limited to 16 pixels by the driver. This doesn't occur on Metal, but has been capped by Unity to make functionality consistent.


To get round this, you can switch to a non-PVRTC form of compression (Compressed and Crunched both use PVRTC).

This isn't the case if you use 16-bit or 24-bit (true color) for your Texture compression. This is will come with a larger memory footprint, but will behave as you expect.

More Information

For more information, consult the following documentation:


Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request


Please sign in to leave a comment.