[Gear VR] Unable to reach 60 fps on empty scene

Hello ,

To answer your questions about the FPS that I saw during my tests, I saw anywhere from ~45 to 60 depending on if I was looking at a wall or if I was looking at a more complex scene.

When you check the rendering times and you get 17ms, is this while playing in the editor or on the device?

I also wanted to check it and see if you had ever completed the build that you mentioned you wanted to provide in your last post?

Hi ,

I noticed that if my phone is fully charged, I get 58 fps no matter where I look. When I am low on battery, it drops to 42 fps sometimes (depending where I look).

I get 17 ms in the Editor and on the device, even in the empty scene.

Sorry, I haven’t completed the build as I was dealing with back button logic (to make short press and long press to work properly) and the other bugs/issues I reported. I am keeping my fingers crossed to get it done in the next couple of days :slight_smile:

Here is today’s test: https://drive.google.com/open?id=0BwE6dxM0O2PsYmRLSkdXQjJha00

I chopped up my level into 50 pieces. It helped with tris count (below 200k all the time) and still low on drawcalls. However, fps is still 58 and render time is 17-18ms (I think it’s all on CPU).

In the General project settings I set Fixed fps and set fps to 62 (some folks said they were able to get 60 fps by setting fixed fps option). Needless to say it had no effect.

So besides unable to reach 60 fps either in the empty scene or it all scenes I linked you, there is constant 17-18 ms render time drain when nothing is even being rendered or computed (empty scene!).

I am using 4.11.1

Did it shed any new light by chance?

Hello ,

I have a quick question for you about Vsync, do you have this enabled?

I am not quite sure. I haven’t seen such setting neither in Project settings nor on my phone.

Where can I find vsync setting?

Hello ,

I have provided an example below on how to toggle this setting.

Ok, did that and print out is “false”. Sounds like vsync is disabled.

Btw, accidentally updated to Android 6.0.1 and I see absolutely no difference in performance - same 58 fps and 17-18 ms.

Any progress with this one by chance?

Hello ,

I have not been able to reproduce this issue on our end. Have you taken a look at the Gear VR best practices documentation? I have provided a link below in case you would like to take a look. Out of curiosity are you able to reproduce this issue in a clean project within the 4.11.2 version of the engine (Not using the current project)?

Best practice link: https://docs.unrealengine.com/latest/INT/Platforms/GearVR/BestPractices/index.html

Yes, I followed best practices doc.

Are you saying you are getting 60 fps on S6 with my project (as-is and empty) ?

Hello ,

Other members of the team and I have been looking into this issue and we have compiled what we think will be useful information as it pertains to your project. This will be a general over view of the project and where we think there could be improvements to performance. This will in turn help get the FPS up to a more desirable level. I hope that this information is helpful.

The level could be broken up in a more useful/performant manner. Our suggestion is to break the level up into modular pieces that could be culled with Precomputed Visibility (more information below).

This is an example of the current level:

Breaking the level up like this is not the most optimized solution.

Next, if we look at the quality of the geometry and excessive triangles we get this. We’ll look at this chunk specifically.

Take note that this is looking at the wireframe overlayed on the chunk selected in the first picture.

The triangle count is ~20k which is high. The rest of the chunks around the level are in this range if not more. The geometry does not need this many edge loops. For instance the flat faces do not need to have multiple front faces, and when developing for mobile you need to keep in mind that you want to keep the scene view under 500k triangles, which with VR really means you want to keep it below 250K since you’re rendering the scene twice.

Next, we’ll move on to the Material used for these chunks. This is a single texture that is 4096. Mobile only supports up to 2048 so it’s going to be down sampled to reduce the quality even though it has been set to NoMipMaps in the texture settings. This means that it stays rendering at full resolution no matter the distance instead of setting the quality lower at specific distances. This is not the most optimized design for mobile and/or game development in general.

Lastly, I’ll end with Precomputed Visibility Volumes that have been enabled for the project, it will not work with the project in its current state. Precomputed visibility works by taking the cameras position when it’s within a visibility cell that gets placed above geometry in the world and if the camera can not see it because it’s occluded by another object it will cull the object out to make things more performant. This is recommended for Mobile because there is no dynamic occlusion queries for mobile.

Suggestions:

  1. You could use better geometry management, decreasing the poly count could improve prfomance and lends it’s self more to the expected workflow.
  2. You could break the models up in a modular way that makes more sense.(Love). I recommend Kevin Johnstone’s modular Level Design powerpoint (link given) He has worked here at Epic for a number of years, is an awesome artists.
  3. Texture layout should be broken up in a way that will be more performant. Having all textures on a single texture is less performant than breaking them up. The best way to think about this is, it is 4x more expensive to use a 1024 material than it is a single 512 material. The same goes for his lightmaps that are all at 1024 or higher. These all have to be loaded into memory on the device, which can be limited. In general lower is better when you can get away with it.
  4. You could Profile this project to identified a lot of these issues. I recommend the following documentation and youtube streams:

Make it a great day

Aye, thanks for the tips. If I don’t get any better performance on my actual project following your tips, I’ll either reopen this thread or create a new one.

Although one thing is still not clear - why is it still at 58 fps if I delete everything and leave player on a singe block (so player won’t fall down) :confused:

I am sort of back to square one, except this time performance drop is significant and happens for unknown reasons. Drawcalls are 20, 10k tris, and fps drop happens.

It’s a new project with new assets (Infinity Blade, optimized even more).

Basically I have a terrain (static mesh) with a few rocks on top of it. If I stand in a way that all rocks are in the view, I get my ~59 fps (as if it’s an empty scene). However, if I get close to any rock so that it takes up whole screen, fps drops to 40-something.

Should I open a new bug report?

May I send you a download link over PM at UE4 forums ?

Thanks beforehand

Hello ,

You will need to open a new thread for tracking purposes. The issue that you described in your last post sounds like it would be a different issue from the original post.

… i’m having EXACTLY the same problem you are discussing in this post… I have tried to upload my APK to Oculus Store 5 times and all of them i’ve been rejected because of the FPS thing.

I’m always testing the APK in different devices (all of them S7, and S6) and i keep getting a FPS debug of 59.90… its SO ANNOYING.
We are using Unreal Engine 4.12 and we also tried to build an empty APK as you did… even in 4.12, 4.13 and 4.14… and still 59.90 fps

The most annoying thing is… HOW did other unreal engine projects to be able to upload their games or apks if there is not “aparently” a way to solve that?

Have you solved this yet? or having the same issue?

Please Contact me if you have any improvements… maybe together we can fix this.

Thanks!

That’s a big problem. I thought that was sorted out. You can never run at 60 fps, not even in an empty scene, because UE4 is vsynced and phone’s screen runs at 59.xx Hz.

If that’s the case, this is BS and I think I might just go with Daydream instead of Gear VR.

I inquired Oculus about this issue here: [Gear VR] Apps with 59fps get rejected - why?! - Oculus Community - 471114