Quest 3 flickers when using multiview and renderingGroupIds

Hi,
I recently got a Quest 3 and realised that my games were flickering when in VR (WebXR). This flickering does not happen on the Quest 2. The flickering does not happen on the Quest 3 if multiview is disabled.

The flickering occurs whenever a gui element is redrawn, so moving the pointer over a button, scrolling a window, etc…

The items that flicker are all on rendering group 0. Items on rendering groups > 0 do not flicker.

Here is a playground showing the issue by creating a number of spheres with rendering group Ids from 0 to 3 and a button that when hovered briefly creates the flicker: https://playground.babylonjs.com/#9K3MRA#1430

To confirm - the flickering occurs whether items are set renderingGroupIds or not, its just that items on the default rendering group Id (0) will always flicker when the gui updates. See https://playground.babylonjs.com/#9K3MRA#1435

Setting renderingGroupId > 0 stops the flickering. See https://playground.babylonjs.com/#9K3MRA#1439

Unfortunately, I do need 4 rendering groups :thinking:

cc @RaananW

So! The best solution I can suggest is to close the eyes every time the GUI updates! :wink:

Joke aside - I can totally reproduce this. It is probably related to an incorrect clear call somewhere along the way. I’ll debug this and hopefully find a solution soon.

1 Like

Thanks for looking into this @RaananW - I just find it strange that my Quest 2 does not have this behaviour :man_shrugging:

1 Like

weird. might be the higher framerate. I am looking into it this week

1 Like

Hi @RaananW - just wondering if the fix for this issue is within the following pull request? WebXR improvements by RaananW · Pull Request #14753 · BabylonJS/Babylon.js · GitHub

Thanks

1 Like

YES! oh wow, i totally forgot to answer here. Yes, it should be fixed with this one. This is one of the demos I am testing with this PR. Sorry, this PR takes longer than I wanted it to.

1 Like

Thanks for the update :+1:

And no worries about the time, I’m well aware of how complicated issues can take longer than initially thought :wink:

1 Like

Just as a teaser

quest 3 multiview error investigation | Babylon.js Playground (babylonjs.com)

This is your playground with the latest snapshot of this PR. no flickering. Just dont click on the button, as there are no alerts in XR :slight_smile:

1 Like

Hi @RaananW - I still get the flickering on this playground on my Quest 3, don’t you?

To get to it I opened this thread on my quest 3 and then clicked the link you provided.
I then waited until the scene loads.
Then I click the button to enter XR, and when I move the pointer over the button or I click it, it flickers in the same way as before

There seems to be an inconsistency with the XR layers implementation in different quest versions. The Quest 3, for some odd reason, doesn’t take the clearOnStart variable and still clears the texture. I’ll see how I can override this. A way to override this is not to use the WebXR layers multiview feature, and instead just use the standard XR pipeline, until the issue is resolved.
I will see if i can get someone in Meta to look into it.

1 Like

The quest Pro had the same issue, but is working well after I applied the fix. Will continue investigating.

1 Like

There seems to be an inconsistency with the XR layers implementation in different quest versions. The Quest 3, for some odd reason, doesn’t take the clearOnStart variable and still clears the texture. I’ll see how I can override this. A way to override this is not to use the WebXR layers multiview feature, and instead just use the standard XR pipeline, until the issue is resolved.
I will see if i can get someone in Meta to look into it.

Will this reduce performance for the Quest 3? Or will it stop the anti-aliasing? If so, I would prefer to just move everything to a rendering group greater than 0, which will solve the issue.

1 Like

yeah, there are caveats to everything :slight_smile:

XR Layers is a new and sadly still unstable feature. I am sure the people at meta will have a very quick answer. I’ll keep you posted here

1 Like

Can I ask - what version of OS are you running? 60?

Not sure offhand, will check tomorrow evening and let you know

1 Like

looks like im on version 62

1 Like

Hi @RaananW , would it be possible to explain why the issue doesn’t occur when using a rendering group Id greater than 1?

Thanks