Rendering issues on certain Android devices

Two testers returned screenshots from their android devices that looked like some of the environment polys may be flipped and were being culled. However, this issue only occurred to these individuals. One of them was using an LG G pad (tablet) and the other Samsung Galaxy S4. There are other testers however with Galaxy S4 that are not experiencing this issue. I cannot reproduce it in the Editor, on any iOS device, or any Andriod device. So it’s really hard to find the cause. Here are links to what they see and what they should be seeing.

How it looks
https://dl.dropboxusercontent.com/u/45752263/bad.png

How it SHOULD look
https://dl.dropboxusercontent.com/u/45752263/good.png

Correct me if I’m wrong, but I believe normals are not necessary for face culling, correct? I ask because I do not import any normals since I don’t have any lights in the scene.

Does anyone have any idea what could be causing this?

Correct. You might try to explicitly set back face culling in the used shaders. In some cases the last used setting is used instead of the default value if it’s not explicitly set.

I see… Thanks jvo3dc. I’ll give that a try.

Although searching through my shaders, I don’t have one that explicitly sets “Cull Front”. Therefore, even if it was using last used setting, there should never be a case where front facing polys are culled.

It could also be somewhere in a bulit-in gui or particle shader for example. Or even outside the shader in a call from the engine itself.

Thanks jvo3dc, after playing will culling for a while I think I eliminated that the issue is from culling. Looks closely it seems that it actually renders everything but it renders certain background polys on top of the foreground polys. Seems like it could be some Z-sorting issue.

Check out this video:

Sorry for the shameless bump, but I’m running out of ideas to try. Any suggestions?

Qualcomm Adreno Series. I see.
What shader are you using? Do you use texture atlas with some alpha inside?

I am using a texture atlas but there is no alpha… It’s a custom vertex shader that takes two textures, one for color and another for lightmaps.

Maybe some formula in the custom shader is not compatible with optimization of Adreno GPU.
Here I found some similar issues on other people encountered like you too:
https://developer.qualcomm.com/forum/qdn-forums/maximize-hardware/mobile-gaming-graphics-adreno/28083
https://github.com/Rajawali/Rajawali/issues/429

In additional. You can take a look at this texture import settings for specific target too.
http://docs.unity3d.com/Manual/class-TextureImporterAndroid.html

Ya. Mobile GPU always a tricky part of fixing especially Android since it has many kind of GPU.
Hope these useful links would help you on something.:wink:

Thanks a lot Akira. The links you provided helped set me on a good direction. At this point I need to get a hold of a device that has this issue and try some of the different solutions suggested there.

After digging around a bit more, I found that this is a Unity bug pertaining to Adreno GPU skinning and GLES 3. Turning off GPU skinning or forcing GLES 2 fixes the issue.