Unity XR SDK Compatibility

The Unity XR SDK is meant to be used with the HDRP and URP pipelines in Unity versions 2019 and higher. As these rendering pipelines have multiple versions and are updated regularly by Unity, we have discovered that some of these combinations encounter issues with the Unity XR SDK. This document provides an overview of suitable combinations where users can expect Varjo Unity XR SDK to work.

Unity version compatibility

Unity version Notes
2019.3.0f1 - 2019.3.14f1 Works. HDRP fix required with HDRP
2019.3.15f1 - 2019.4.12f1 Does not work.
2020.1.6f1 → Works. HDRP fix required with HDRP
2020.2.0b2 → Works.

HDRP version compatibility

HDRP version Notes
7.0.0 - 7.4.3 Works. HDRP fix required
7.5.1 Works.
8.0.0 - 8.2.0 Works. HDRP fix required
9.0.0 Works. HDRP fix required
10.0.0 Works.

URP version compatibility

URP version Notes
7.0.0 - 9.0.0 Works (multipass only). URP fix required
10.0.0 Works.

Fixing HDRP for Varjo

Note! This script directly modifies your HDRP source files, which may have unwanted side effects. In our tests we have not found any issues caused by our patching tool. Whenever you update HDRP in your project, you need to re-apply this tool.

Use at your own risk.

We have created a simple editor script that fixes some HDRP incompatibilities with our Unity XR SDK. This tool can be downloaded from here.

Usage

  1. Make sure you have High Definition Render Pipeline installed in your project
  2. Copy folder VarjoHDRPPatch in Assets folder of your Unity project.
  3. In Unity Editor, go to Edit -> Render Pipeline -> Fix HDRP bugs affecting Varjo XR Plugin.
  4. Click Continue.

Fixing URP for Varjo

Note! This fix directly modifies your URP source files, which may cause unwanted side effects for which Varjo takes no responsibility. In our tests we have not found any issues caused by this patch. Whenever you update URP in your project, you need to re-apply this fix.

Use at your own risk.

Follow these instructions to enable URP to work with your project. This fix has been tested with URP 7.4.1, and there’s no guarantee it will work on other versions.

  1. Make sure you have Universal Render Pipeline installed in your project.

  2. Open the file UniversalRenderPipeline.cs under the Packages -> Universal RP -> Runtime folder in the Project Window. In the #if ENABLE_VR block, change the numberOfXRPasses from 2 to 4:

     #if ENABLE_VR && ENABLE_VR_MODULE
         if (cameraData.isStereoEnabled && !cameraData.isSceneViewCamera && 
             !CanXRSDKUseSinglePass(baseCamera) && XR.XRSettings.stereoRenderingMode == XR.XRSettings.StereoRenderingMode.MultiPass) 
         { 
             cameraData.numberOfXRPasses = 4; 
             cameraData.isXRMultipass = true; 
         } 
     #endif 
    
  3. Under the Project Settings, enable the Varjo provider under the XR Plug-in Management, and then under the Varjo settings, make sure Stereo Rendering Mode is set to Multi Pass. Two Pass rendering is still not compatible with Varjo Unity XR SDK.