Only 1 component rendering shader on landscape in Android mode and device

Hi All,

Ok have a question to ask and it’s been driving me crazy for a while. I’m working on a mobile game for work (I am a Games Development Tutor) and I’m doing this for the Android device. I have a simple shader for the landscape which has 4 textures, 1 normal map, old style layer blending and only comes to 72 instructions. Now this looks wonderful when playing on just normal Windows mode. However the moment I test it on Mobile or when I port it to my Android phone to test on the actual device only 1 component is rendering, the rest is default shader. I have noticed in the log I do get this warning:

LogShaderCompilers:Warning: Failed to compile Material /Game/Environment/Materials/M_Terrain_Ground_A.M_Terrain_Ground_A for platform GLSL_ES2, Default Material will be used in game.

So clearly something to do with the shader not showing up. This is what I get when I test it in mobile mode and what you see here is what you see on the device:

As you can clearly see the PIE behind it it’s how it should be. Now I thought you could somehow compress your landscape shader into one texture then re-apply it back onto the landscape. If so where can this be done as I have searched high and low. If not does anyone have an idea what could be going wrong? Also ignore the shaders compiling, does it all the time when I test on the PC in mobile mode but it’s fine on the device.

Any help would be greatly appreciated.

Thanks
Regards
Shez

I am taking a guess here this has stumped people? I have been going on with other parts of the game in the mean time and still researching but still coming back blank.

Hi Shez,

Just a wild guess, your 4 textures material setup is causing this, try using 2 textures only.

Have a look: Textures for Mobile Platforms | Unreal Engine Documentation

For mobile UE4, best to stick with normal mesh and 2 textures material setup for consistent performance and visual across multiple devices.

Currently in our iOS pipeline we export and optimize landscape manually then use it with blend mask - it allows us to use more complicated shader.

Thanks RaynerAJ and ufna. Might have to try the 2 texture bit but was thinking of the way you mentioned ufna also. Didn’t want to go there but might have to. Ok thanks I shall give it a burl!