2019.3 Release - XR Updates

Hi everyone, last week we released Unity 2019.3 which included several XR features. We’ve seen questions come up, and I wanted to address the common topics being raised.

Vulkan with FFR for Oculus Quest (Experimental)
Vulkan/FFR on Oculus Quest is currently an experimental release, in which we intend to gather valuable feedback from the community on its performance in real world situations. This feature is only available through the XR plugin framework using the Oculus XR Plugin and not available through the deprecated built-in XR pathway. The feature is also only supported for a limited set of configurations. Currently, the feature only works with the built-in rendering pipeline (using multipass with post processing disabled) but will soon work with URP when URP 7.2.0 is released. We will make sure our documentation is more explicit about the scope of this experimental feature, and include guides on how to get started.

New XR Plugin Framework
Over the past several years we realized that our approach in integrating XR platforms directly into Unity’s core engine was not going to scale well with the anticipated growth of new XR hardware/software providers. We realized we were getting in the way of innovation. So we decided to develop a new plugin framework (i.e. XR SDK) that opens up the door for XR providers to leverage our engine features & optimizations. This plugin-based approach improves our ability to make quick bug fixes, distribute SDK updates from our partners, and allows us to support new XR devices and runtimes without having to modify the core engine.

Our new XR plugins released in 2019.2 as preview packages, with the intention of collecting user feedback and addressing bugs. The plugin packages were tested and verified by all of our platform partners to ensure feature parity and performance with their respective built-in version and compatibility with their own toolkits. During the 2019.2/2019.3 alpha and beta cycles, we received great feedback from the community. Combined with our own internal testing and testing by our platform partners, we made the decision to release our new XR plugins as verified packages in the 2019.3.

We also marked the built-in integrations as deprecated. We understand why folks are concerned about not having clarity regarding the deprecation of the built-in integrations, and how this will impact their projects. It was never our intent to outright remove a path from users and we want to ensure you that we are committed to keeping it working through the 2019 release cycle. Deprecation means the built-in implementations are still available for use in 2019.3 and will remain functional in 2019 LTS with no new features, but essential bug fixes. We will only remove the built-in integrations in future releases once we are confident that the new plugin approach is working and stable for developers as intended.

Migrating to the XR plugin framework has impacted how projects are configured in Player Preferences and how users manage the specific platform packages they are targeting. We realize this has added extra steps from the prior setup process. In the near term, we’re working on better documentation (e.g. migration guide and getting started guide). We’re also working on project templates and more samples for XR to help developers get started more easily. Additionally, we’re constantly working on improving the overall UX workflow for XR with regards to package discoverability and installation.

XR Performance
Most people find performance issues first with VR because it’s felt most in VR, but the root of it may or may not be VR-related. From the XR side, we have not seen any noticeable performance regressions in our testing. Our XR tests evaluate many different scenarios, and we’re always expanding our test cases. As we head towards the 2019 LTS release, we are prioritizing performance over everything else to make sure it is on par with our community’s expectations. If you are running into issues, please file a bug so we can help identify the root cause and work towards resolving.

6 Likes

Is there any guidance on how to use the Vulkan FFR through the Oculus XR Plugin?

It is utilising the Vulkan Fragment Density map from what I can see in the android logcat logs in a build simply using the Oculus XR Plugin without the OVRPlugin from Oculus Integration Assets off the Asset store.

The documentation for this functionality is lacking through the Oculus XR Plugin manual as I cannot see any mention of the Vulkan FFR Fragment Density Map there or how to change the scale of it Class Utils | Oculus XR Plugin | 1.0.3-preview.1

1 Like

Yes; there are three ways that you can set the foveation level (in order of goodness):

  • Through our XR Plugin for Oculus, there’s a new API function
Unity.XR.Oculus.Utils.SetFoveationLevel(level)
  • Specifying the level using adb to set a debug property,
adb shell setprop debug.oculus.foveation.level <level>
  • Oculus’ OVRManager asset package which provides functions for managing the appropriate levels. Details can be found in the Oculus developer pages (for example, here) and other Oculus developer blogs.

Foveation has five levels from zero (0) which disables the feature, to four (4) which maximizes the rasterization control (see here for details).

Apologies on that part. We’re working to include all the new changes in our documentation but haven’t gotten that quite completed yet.

Thanks for the speedy response to this here, apologies for my constant asking about this, I knew we could activate it through the Oculus XR Plugin somewhere. Great news that it is using the Vulkan Fragment Density map as there is potential for FFR to be more cross platform as Vulkan Fragment Density map works on any supported platform (PC, mobile etc)

1 Like

I have been using Unity 2019.3.0f6 with XR plugin system and my Oculus XR Plugin version is 1.1.5
When I tried to use this Unity.XR.Oculus.Utils.SetFoveationLevel(level) for setting FFR, there is no “SetFoveationLevel” method in Utils. Can you let me know whether I missed something ?

It may not be released yet in the current Oculus XR Plugin I believe

So if I want to use Vulkan Graphics API and FixedFoveatRendering in the new XR Plugin system. Can’t I do it ?

@daves which package version is Unity.XR.Oculus.Utils.SetFoveationLevel(level) supposed to be in? Doesn’t seem to be in 1.1.5 (the 2019.3 verified version).

I just noticed that myself :(. It should be in the next release of the Oculus XR Plugin. I’m verifying with our internal teams on when that’ll be.

In the meantime, please use the adb shell setprop debug.oculus.foveation.level <level> version.

Sorry about that everyone; I should have checked before posting.

1 Like

@petergraham003 You can use Vulkan and FFR with the XR Plugin system. You’ll just need to set the foveation level using the adb command version. As mentioned, we do have an API for setting the values from script, but it hasn’t been released yet.

Sounds promising. Do you think URP will drop on Friday (7.2.0) ?

Foveation can also be set using the regular OVRPlugin call, no need to go the ADB way. Fortunately Oculus Utilities are still working with the new Oculus XR Plugin (even hand tracking, I was pretty surprised).

1 Like

Perhaps I’m doing something wrong, but exclusively using the new XR system with the Oculus Loader, everything tracks and works correctly in editor, but after building a player, there is no tracking at all and the headset does not initialize (never leaves the OVR compositor/home). Is there an obvious thing that would make it work perfectly in-editor but not at all in a build?

I just updated to XR Management 3.0.6 as well as disabled the Shared Depth Buffer setting in the Oculus loader and now it’s working. So if anyone else has the same problem, try one or both of those.

I’m also not sure what I am doing wrong either. I’ve followed the directions provided to use the new system and all the required packages appear to be present in the project.

Tried again on a blank project and have the same results, I can not get XR working at all with my Oculus

I tried it both with and without the Oculus home running. If I disable the Initialize at start the errors go away but that would obviously not be ideal.

I added the XR Interaction Subsystems just to see what would happen and I still get the errors.

Unity 2019.3.1f1 All packages included:

1 Like

Please report this using Bug Reporter

1 Like

I’m having the exact same issue… any updates?
I followed all the instructions but I can not get XR working at all with my Oculus Rift S!

Windows 10
Unity 2019.3.2f1
XR Management 3.06
Oculus XR Plugin 1.1.5

Thank you for any help. We are stuck…
G.

Install the Oculus app, verify it works

Any hint on how to use culling for different eyes (for the purpose of stereo rendering of render textures)?

When setting up an XR Rig, it creates a single camera, and I have no clue on how to do eye-specific culling.

I had this problem after a fresh install of the oculus app.
Rebooted the PC. Allowed unkown sources in oculus settings → general. Then it works.