Default VR Resolution on Vision Pro looks scaled and low resolution. Settings don’t help. How to change?

Quick question related to VR resolution. I’m using the basic box VR template and get pretty low resolution visuals when I launch to Vision Pro. Looks about 1080p which stands out on Vision Pro like a sore thumb. Try as I might, I can’t get the resolution settings in rendering to make a difference. Is this locked? Would I have to edit the web XR layers for a custom resolution?

any idea @moka ?

Hi @Jeffrey_Vadala, I unfortunately do not have AVP device (would love to though!), but I do all integrations of WebXR as an open source contributor. So we can work together on this issue.

In WebXR when session is started, the only way to control resolution - is to provide a frame buffer scale factor to XRWebGLLayer. The underlying system will create a frame buffer and define resolution. So if you can launch and set a few breakpoints and tell me what values you get - that would be amazing and can help us to find of what we can do here:

First of all, set a breakpoint here: https://github.com/playcanvas/engine/blob/main/src/framework/xr/xr-manager.js#L797
And tell me what values you have of each of these:

device.maxPixelRatio
window.devicePixelRatio
this._framebufferScaleFactor

And then another breakpoint here: https://github.com/playcanvas/engine/blob/main/src/framework/xr/xr-manager.js#L867
What values are of:

width
height

I have recently pushed a feature to control framebufferScaleFactor, but the engine update needs to be deployed first.

Also, if you use Editor, you can set Device Pixel Ration checkbox to true in Setting > Rendering.
Or if you use engine-only, then use this: app.graphicsDevice.maxPixelRatio = window.devicePixelRatio;. To see if it helps.

3 Likes

Unfortunately, my intel mac won’t let me debug and set the break points on the Vision Pro. The intel mac limits on visionOs dev were one of the reasons why I explored Playcanvas. As for your second suggestion in the editor, that was my first guess - I did the Device Pixel Ratio. It didn’t help. As for engine-only, I’ve not tried this out either, I figured it would not deploy easy to the Vision Pro. One thing I noted, not sure if its my imagination or the way its rendering, the hand tracking (with the full hand model - a separate template) seemed maybe higher resolution? It’s hard to tell given there are no objects in that level with the exception of the hands, but they at least did not exhibit the aliasing that the boxes and white sphere lights did in the other. I’ll investigate more but I look forward to your framebufferScaleFactor feature.