Oculus Quest performance issue

I am developing a project for an oculus quest. I have a problem of poor scene performance. All project settings are made according to the instructions of the developers for the oculus quest in UE4.

engine version - 4.22, 4.23, 4.24
All meshes in the scene in Static mode
Baked lighting: Skylight - Static, Directional Light - Stationary.
Using Forward Rendering
Texture Resolution 256
Resolution of reflection spheres - 128
Maximum Lightmap resolution - 1024

Top view, from afar on the entire interior and all furniture - 72 fps

Top view, close to the entire interior and all furniture - 48 fps

View from the 1st person in the corridor - 44 fps

View of the room on the sofa and wardrobe - 35 fps

In the smallest room in the scene, the FPS can vary from 72 (red) to 58 (Green)

4 materials were used in this project:




transparent furniture material

The total number of polygons:

When the scene has FPS = 45, the Stat Unit command gives the following result:
Frame 21 ms
Game 5.5 ms
Draw 16 ms
GPU 20 ms
Mem 461 mb
Draws 429
Prims 632.8 k

"stat gpu", “stat initviews” - https://www.dropbox.com/s/ovrn6r6qoc…09-29.jpg?dl=0
"Shader Complexity" - Dropbox - image_2020-03-02_12-20-40.png - Simplify your life

Project download link** - https://www.dropbox.com/s/9sa9pp55ef…R_NEW.rar?dl=0**

Please help :slight_smile:

Best is if you can share the project file and provide a download link.
There are so many settings and possibilities - only having the project file allows others to see behind the curtain!

download link has been added!:slight_smile:

Looks like way too many draw calls. I presume this is still many individual meshes? Combining static meshes and going to atlas’d materials is a general recommendation. Also, I believe transparency is particularly costly. You seem to be using as a visual effect, but I would suggest developing a different approach.

  1. its about 5 textures in this scene. I do not think that this action will change much.
  2. we tested meshes by unifying them (1 mesh = room). it did not give a significant result (+5-6 fps).
  3. Transparecy - Dithered opacity. I used the cheapest way to apply transparency (+3 fps).https://youtube.com/watch?v=ieHpTG_P8Q0 I also removed material from all furniture - no result.

Hi, if you don’t want to change color or intensity of your directional light, then make it static not stationary, else it will still be partially dynamic.

Next keep your shader complexity low (under optimization viewmodes you can change to shader complexity). Keep the amount of instructions per pixel around/below 100 for most of your view. So try making your glass material “unlit”.
Can you show an image from the result of following stat commands?:

“stat gpu”, “stat initviews”

I need to dynamically change the position of the sun in the scene. So stationary is necessary. Dynamic sun starts to blink in oculus quest.

Сhanges in the material of the glass did not add FPS:(

“stat gpu”, “stat initviews”, “shader complexity” link has been added!

Ok, your shader complexity is way too high. For mobile and especially oculus quest where you also need high framerates your shader complexity should be around or below 100 instructions per pixel for most of your view. At the bottom of the shader complexity view you see the scalar, so white would be 2000 instructions per pixel and the scale is linear, so you might wanna try making most of your view bright green. But you really should change the material of the pink complexity.

Next you should test performance always in standalone, and not in viewport or PIE cause this will give you wrong results. Don’t know about oculus quest, but with the rift s I needed to start the game from command line, cause there is no standalone option only “VR Preview”.

If you don’t need the atmospheric fog, then I would remove it (since your level seems to be indoor, you won’t see any difference but it cost you performance, that’s the “atmosphere” in your GPU stat).
Next you might wanna disable some post processing if you don’t need it, cause that’s what causing most of the cost on your GPU.
“Slate UI” that’s the UI, right now you have that value cause you have those stat windows open and also render the editor.
“Unaccounted” -> you’re not running in standalone.
“Shadow Projections” and “Shadow Depths” is cause you have stationary/movable lights that cast shadows.

To me from:

"stat gpu", “stat initviews” - https://www.dropbox.com/s/ovrn6r6qoc…09-29.jpg?dl=0

it looks like your drawcall are too high! Are you sure you merged all actors? Remember mobile does not support occlusion by default so even if you only ‘see’ a few objects in view all the objects before those are still being rendered. In 4.23 or 4.24 epic added software occulsion for mobile which needs to be turned on in your project settings.

Also obvious question but do you have mobilehdr turned on? This needs to be off