- Home /
On Android, Standard Shader metallic/reflective surfaces appear blown out when distant. Look fine in Windows.
I'm seeing some strange behavior of the Unity 5 Standard shader when building for Android (GLES3). Wonder if anyone else has noticed. Metallic surfaces look blown out and white when distant and only appear properly when they come close. (I'm building a rails shooter so this is very obvious in my game). Doesn't happen at all on Windows. Any ideas?
The first idea that comes to my $$anonymous$$d is the quality settings.
Did you check your QualitySettings ?
By default, quality is lower on mobile platforms, so maybe there is a parameter to checkout about shaders/lights/distances to camera. $$anonymous$$aybe you could try to play with this and see if you have a better result.
Looks like i found the problem. It's a known bug!
http://fogbugz.unity3d.com/default.asp?715326_20i4jsji7dabh4np
Bug is marked as closed, but hasn't been resolved. Not sure what I'm going to do about this.
Answer by philwinkel · Sep 10, 2016 at 03:52 PM
the standard shader (ill refer to it as PBR in general) has not worked properly on mobile platforms, to my knowledge. In the unity 5 beta there was no support for mobile platforms and i dont think anything has changed much.
You need HDR camera which i believe unity can do. However from what I understand,
unity currently does not support linear lighting on mobile platforms, so PBR lighting is not going to look ideal
i dont know if they have adjusted the mobile variants of the standard shader "look right" in gamma lighting, even if they have its not going to look as good as linear
long story short, i dont think they have made the standard shader work well on mobile platforms. there are things in the unity roadmap about fixing it, and supporting linear lighting.
i believe in order to get the standard shader working well on android they need to get opengl es 3 or 3.1 (i forget) working. And you need a mobile device that supports linear lighting, and apparently a lot of them do not (however newer devices are beginning to support linear lighting). And finally unity needs to implement linear lighting on mobile platforms.
Additionally, you need some image effects / post processing to make PBR look good. Bloom, tone mapping, color grading, at least. You probably want anti aliasing of some sort. So right now, super-high end devices like a Nvidia Shield Console or really high end Apple devices with Metal graphics can probably handle some entry-level PBR rendering, but for the most part lots of devices are not there yet. It's coming though, very soon. So unity needs to get on it.
Unreal engine 4 does it, i see no reason why unity can't do it. There are probably limitations of the unity engine they are going to have to fix first, before linear is supported on mobile.
Here is the Sun Temple demo running in UE4 , on android https://www.youtube.com/watch?v=zcE8DHI1JJ8
Unity has it on their roadmap currently under "Development", linear lighting on mobile, as well as PBR mobile optimizations... "timeline long or uncertain" :(
Answer by alvaro-em · Mar 15, 2017 at 04:32 PM
@PixelRouterVR: I was experiencing the same issue, and from @philwinkel answer I guessed that I had to enable HDR at the camera. I tried it and it seems to be working correctly now.