WebXR FPS in Playground (Oculus browser)

Why does the playground runs barely at 30-45 fps in Oculus browser in immersive mode?
I compared with A-frame and immersive-web.github.io examples and they run at maximum fps i.e 90 fps on Quest pro and 120 fps on quest 3.

Here are the links of examples that i tested:

A-Frame: In-VR Performance

Immersive web: Projection Layer with Multiview

Playground: Babylon.js Playground

cc @RaananW who is famous today :slight_smile:

can I ask - how do you measure the FPS?

The simplest playground should never run in 30-45 FPS, it should run in the full FPS supported by the headset

Hi @RaananW, thanks for the reply. I’m using OVR Metrics tool OVR Metrics Tool

1 Like

thanks, i’ll run some tests

I get 80-85 FPS on this scene, very similar to what I am getting from the aframe example. when introducing complex meshes (such as the controllers or the hands) it is reduced for a few frames to ca. 70, and then goes back up. I don’t see 30-45 at all. On the quest pro I am on constant 90 FPS without any frame drop.

Not sure why you see such a low FPS TBH.

@RaananW I’m seeing the same as @hardik, both in my Quest 2 and Quest 3.

Some examples:

WebXR (30fps) (source at GitHub - Corysia/webxr: Simplistic BabylonJS WebXR demo)
https://esc.art is the Wonderland Engine and it’s providing 72+ FPS

In all cases, this is with the standalone headset internal browser, using OVR Metrics to see in realtime what the FPS in the headset is.

Attached are some screenshot of the OVR Metrics UI.

This first one is of my own tiny BabylonJS app listed above.

This second one is of the game Escape Artists, showing 71 fps.

What Quest OS version and browser version is this running on?

That’s comparing apples and oranges.

You have physics turned on, using cannon. You have collisions enabled. You have pointer selection turned on, on the entire scene. You have many other features that babylon offers that needs to be disabled to get it to the best performance. You are comparing a game that is fully optimized with a scene that has everything. It is true that this scene should not be expected to render in such a low FPS, and until I will see a profiler I will not be able to really tell you why this happens, but this is not the comparison you should be making.

That doesn’t explain why Babylon.js Playground gives me exactly the same FPS of 30.

Both headsets are running v68 with the browser updated to the latest version (32.3.0?)

Once again, I didn’t say you are wrong. I said this is the wrong comparison.

And this playground is working very well on my device (85-90 FPS, depending on the controllers shown/moving), so I am not sure why you see 30 FPS. Anyhow - I will analyze, process and return to you on this one.

1 Like

I’m just chiming in to say I also receive 30fps using the native Quest browser to view VR experiences made with BabylonJS.

I’m curious to know how you’d profile this as I don’t see any way to see the Inspector from within an immersive session. Nor could I get any numbers out of the Meta Quest Developer Hub while trying to profile. Outside of a VR experience, the browser renders at 90fps.

Me too! In these days I’ve made many tests in many scenes and I can’t reach more then 20-40FPS (Oculus Quest 2 and 3). I’ve noticed that if I try a very simple scene with the oculus browser at the first start, initially I can reach 80-90FPS. If I interact with the scene and then I close and reopen the browser I cannot reach more then 20-40 FPS even in a very simple scene.

cc @RaananW to have a closer look once back from vacation

Perhaps we can get a common playground started to capture some data points so we have a point of reference to debug this?

Yes a playground repro would be awesome !!! but this one should be able to repro Babylon.js Playground ???

1 Like

These all run great on my quest1 standalone.

I don’t see an fps display but they are very smooth. My personal project is broken atm for some reason, but https://aether.garden pulls fine.

Neat demo btw @Corysia

Install OVRMetrics to see how apps are performing on the Quest. The easiest way I know to install it is to download the Meta Quest Developer Hub and install it from there.

1 Like