I’m getting some problems on iOS with what looks like compression artifacts or floating point precision problems in specular highlights on materials based on the new standard PBR shader, in Unity 2018.3.11 using Lightweight render pipeline.
In the editor the look fine, but not on the iOS device. I’ve found several mentions of similar problems, but the corresponding issues in the Issue tracker are all marked as solved and offer no advice. Another promising clue to a similar problem seems to be this thread: Standard shader material directional light reflection creates big white artefacts on iOS about similar problems being caused by shader optimization for iOS/mobile reducing floating point precision (if I understood it correctly). However, I don’t understand how I would apply their proposed “fix”, or if it even applies when using the Lightweight render pipeline.
Unity defaults to using the basic color image compression on mobile platforms, which isn’t great for normal maps. They do this because most mobile devices simply do not have a good compression format for handling normals, and they can simply the shaders a little by avoiding using the two channel compression formats most often used for normal maps on PC and console.
Most of the time this is okay and the compression artifacts aren’t as obvious. In this case, they are. Go to the platform overrides for that texture (the tabs on the compression settings) and set the texture to be an uncompressed RGB24 instead.
Thank you for the reply, but I don’t think that’s the reason in this case as the material doesn’t use a normal texture, so there’s no texture I can override the compression on? (the dots with normal-mapping seen in the screenshots work fine, but are on a separate material). The specular problems only appear on the simple red base material. The normals set in the shader are just the default Tangent Space, I’ve attached the shader graph below (just a simple color multiplication of a base texture).
Ah, yeah … hmm. Looks like they’re using a low precision float for normals. Unfortunately the only thing you can do is report the bug and wait for them to fix it.