AR / VR

Build Scalable Immersive Experiences with Networking APIs, Swift Support, and More Using NVIDIA CloudXR 3.2

Since the launch of NVIDIA CloudXR, we have received positive feedback and wide adoption of the SDK. Developers have been busy building solutions that take advantage of remote data center hardware powered by NVIDIA GPUs to render full-fidelity XR experiences remotely. With CloudXR, you can deliver these experiences to low-powered, off-the-shelf consumer devices streaming on networks anywhere in the world.

Our developer community continues to help shape CloudXR and we couldn’t be more excited to launch CloudXR 3.2. This release includes some of the most requested features that help to build even more scalable and powerful experiences for users. Below is an example of a Quest 2 device profile on the server.

Preconfigure servers with device profiles

deliveryType : 2
width : 1832
height : 1920
maxResFactor : 1.2
ipd : 0.058077
fps : 90
proj : -1.279942 1.279942 -1.191754 1.191754 -1.279942 1.279942 -1.191754 1.191754
ctrlType : 2

CloudXR 3.2 now supports setting a remote server to be preconfigured with a client device profile before the client device connects to the server. Most XR applications check for a connected headset on launch and won’t proceed until a device is connected. This results in limitations supporting global orchestration, global scaling, and overall application usefulness.

You can now define a device profile on the remote server that is used by CloudXR during an application’s initial launch. You can then launch your remote application in a waiting state, speeding up application delivery between the server and client. 

Using a preconfigured profile hard-sets the server with these values and ignores actual device parameters that connect to it. Connecting with a device that has different IPD, projection, or viewport values results in an incompatible video for the device. Also, projection values may differ based on IPD settings on the device. Check within the CloudXR client logs for the specific values that you require.

New networking-focused client API

We’ve introduced an API that enables you to query the quality of service (QoS) and network information from a remote streaming server. You can use this data as-is for troubleshooting or building user interface representations of the data that display indicators of varying performance to end users.

Client application developers can also now specify network interface information that helps CloudXR optimize QoS decisions. These include network topology type (5G, Wi-Fi, LAN) and maximum bitrate, which are set using the cxrConnectionDesc description members. If you are using the provided sample clients to help with development, network topology options are set using the command-line flags -nic and -nt. Keep in mind that indicating a maximum bitrate only helps the CloudXR QoS algorithms and does not guarantee this rate will be achieved.

90fps support on Meta Quest 2

The Meta Quest 2 (previously Oculus Quest 2) sample client has been updated to support 90 hz using the -rrr 90 flag. This allows for even more immersive experiences at the device’s preferred frame rate when streaming from a CloudXR server.

Image of a scene from within a VR game, with a SteamVR dialogue box open showing 90hz.
Figure 1. Screenshot of a CloudXR Server streaming to Meta Quest 2 at 90 hz

Support for Swift for iOS developers

There are improvements for iOS developers as well. Logs have been made easier to access by listing them within the Files application. Also, the iOS sample has been updated to Swift, an important step in supporting Apple’s latest libraries.

This version has parity with the Objective-C sample client, but you should start transitioning to Swift. Because Apple’s latest libraries are accessible only with Swift, the Objective-C client will be removed in a future release.

Updates to the programming SDK

CloudXR 3.2 includes new flags that help you select gamma-corrected or linear output (Android only), update projection parameters, or send new interpupillary distance (IPD) adjustments. You can also send user-defined pose IDs with updates, and updated pose transformation mathematics. These additions help in instances where the local device IPD is manually changed and must be updated on the server. It also helps in scenarios where the video in a local headset looks either too bright or too dark. 

Resources

The CloudXR SDK is what it is because of your continued support and feedback. The new features in version 3.2 are directly influenced by you, our developer community. Make sure to upgrade or download this latest release from the CloudXR SDK page on the Developer Zone. If you’re not already a member of the CloudXR Early Access Program, register to join.

The NVIDIA Developer Forum is also a great place to ask for assistance and offer suggestions to future releases of CloudXR. While there, connect with like-minded developers building clients, applications, and experiences. We’re excited to see what you build next. 

Discuss (2)

Tags