Need help with building for iOS

Hi guys…

Some feedback. And thanks once again for the advice and encouragement. It is much appreciated.

As I mentioned yesterday; I set up a repo and pulled everything over to my mac.
Then I started over with a new certificate and provision. I had some problems getting the two to match up but in the end I found that it was a simple naming mistake that I made early on and only noticed later on. I fixed it and my mac is now busy with a full test build! HalleluYah!

Hi guys… Now I need some more advice if it is at all possible… Our app runs on Android in the range of 45-60 fps. But on the iPhone 6 that I have built it to it barely reaches 30 and mostly stays under 25 fps. That means that it stutters and is quite choppy.

Do I need to optimize even more or is there something that I am missing with regard to building for iOS?

Sorry, I packaged a development build and installed it on the iPhone 6. And for some reason textures I use on the desert floor have been compressed extremely and are very pixelated. It looks horrible. I will go on with troubleshooting and trying to get things to run better. Help and advice would be much appreciated though…

Sounds like something is wrong with the render settings if it’s pixelated and running slowly. Make sure you didn’t enable deferred or desktop rendering in iOS settings. Alternately make sure your textures are conformant to regular requirements: square, multiple of a power of two, etc. Then check the compression method being used on it. Also see what your frame rate limit under the iOS settings is set to. I usually bump mine up to 60 for recording video but then change it back down to 30 for releases, otherwise older devices get hot and eat battery.

Comparison screenshots between the two platforms would help. In my experience iOS devices run UE faster than comparable Android devices, Metal is a beast.

Hi @Antidamage. Thanks for your quick response. I was also under the impression that my app would look and run better on iPhone… Been reading about Metal for a while and I have really been looking forward to see it in action with my work.

“Make sure you didn’t enable deferred or desktop rendering in iOS settings.”
My project is set for Metal Mobile renderer but I do not see a deferred rendering option. Where do I find that? To check that it is disabled…

All of the textures that I use are square, and power of two, except for a logo, which I have specified as being used for User interface 2d.

“Then check the compression method being used on it.”
All of my textures are being used in the default DXT1/5,BC1/3 on DX11, except for the logo that I mentioned before. Should I be using a different compression format?

I will send some comparison screenshots in a moment…

Android screenshots

iOS Screenshots

Well, you’ve eliminated the obvious things. The problem is it’s not using linear interpolation when it’s sampling and it’s a really low detail mipmap. Are you doing anything funky in your shader? Anything to do with math on the UV coordinates? It must be either that material or texture because it’s not affecting the other objects.

Check the sampler type in the texture node of the material.

I made the master material from a tutorial on YouTube because I wanted to be able to use vertex painting so that the repeating patterns could be broken up. I also improvised a few things as well as I knew how because I needed to get the texture samplers down to I can’t remember how many… Here is the node setup.

I then use a material instance on the plane itself…

These are the options that are then available in the instance…

That should be ok. There’s some edge cases where some math operations break runtime shader optimisations and give results that don’t look smooth, this happens in particular with refraction shaders, but tiling won’t trigger it.

It might be worth truncating the decimal from those values though. See if that improves it at all, I’m just guessing though. I suspect someone will come across the thread who knows what’s up eventually.

Ok cool… I will do that and let you know what happens… Thanks again Antidamage.

PS. I had to look up what truncating the decimal means…:eek::smiley:

I did what you suggested Antidamage, and re-built, but it has not made a difference… I will replace the material with something else and see if that makes a difference.

I made a simple tiling material which also didn`t make a difference. One can see that the material is different but it is still very pixelated and the frame rate quite low and stuttering…

Is this always on a landscape object? What happens if you put it on a cube? Paste a screenshot of your material graph please.

I’ve also just noted that in the android and iOS screenshots the distant hills are using the same miplevel as the iOS screenshot has up close. There has to be a reason for that, either something is misconfigured or something is the wrong format for the iOS sampler.

Sorry for the late answer, glad you managed to get your project working but since I’m here, might as well clarify a few things regarding Mac.

As you know, Apple is very strict when it comes to their products so most of the stuff UE4 requires to build and deploy on Apple products requires doing it on a Mac.
The remote UE4 tool allows to build/deploy on a PC by sending the workload to a remote Mac in the case you don’t want to bother with using a Mac directly, though the certificates may cause problem that way.
The simplest way to do it is the way you did by sending the project over to a Mac and building/deploying there, especially when it comes to the certificates since Xcode can handle them for you.

Hi Antidamage and others. Thanks for your insights and advice.

Is this always on a landscape object?

Yes, in this project, but only on Mac, does it do that. But these are not landscape objects. They are not really landscape objects. I found that performance improved drastically if I didn`t use landscape objects but created what I needed in Blender and then bringing them in. This means that they have the normal collision but I use complex as simple. Could that be the problem?

The material is truly just a tiling texture and normal map.

Alright, but is your material applied to a landscape? If so try swapping all the UV stuff for a Landscape Coords node. Don’t forget to build your lighting even if the lightsource is dynamic.

No the material is not applied to a landscape. It is a plane. One that I made in Blender. It forms the center of a modular “landscape” system that consists of 9 pieces. The center plane can be walked on but the other 8 basically just act as a 3d backdrop.