Getting Started with Varjo Plugin for Unity

Due to the Bionic display, there are some differences between developing for the Varjo headset compared to other VR headsets. Varjo Plugin for Unity provides necessary Unity scripts and plugins, in order to render content to the Bionic Displays. Varjo Plugin for Unity will also provide scripts for input and controller tracking, as for the moment you cannot use Unity’s internal VR functions to do that. Please familiarize yourself with the key differences from Varjo and SteamVR. 



You can download the Unity plugin from the Downloads page.

  1. If this is your first installation of the Varjo Plugin for Unity, simply unzip Varjo Plugin for Unity zip to the root folder of your project. Varjo Plugin for Unity will constantly update, and it is recommended to use the latest version with the latest features.  
    1. For updating instructions for the Varjo Plugin for Unity, refer to the “Updating Plugin” section. 
  2. Varjo and VarjoSteamVR will be at the root of your assets folder by default. Feel free to move them to a different folder in your project if needed. 

Note: All the screenshots in the Unity section of Varjo’s documentation are taken from Unity Software version 2018.3.2f1. The User Interface of the Unity Software might change in future versions.


Creating new Unity project

If you are creating new project, follow one of the following guides to make sure everything is working properly:

Creating a Unity project using URP

Creating a Unity project using HDRP

Creating a new Unity project 

Updating your existing Unity project

If you are migrating a previously developed project to work on the Varjo headset, follow the “Updating an existing Unity project” guide to make sure your project is compatible. 

If you wish to keep your previous project settings, you can unzip only the Assets folder. However, make sure that the settings in the Required Unity Settings section are enabled, otherwise VarjoManager will display an error and won’t work correctly.


Required Unity Settings

Make sure the following settings are set before proceeding with the development of your project. You can access the Settings through Edit > Project Settings  

  • Navigate to Edit > Project Settings > Player 
  • Depending on the Unity software version you might have either XR Settings or Other Settings section available 
  • Make sure Virtual Reality Supported checkbox is not selected. 

The reason for this setting is that currently the plugin can only work with the Varjo headset and not any other VR headset.  

  • Navigate to Edit > Project Settings > Quality 
  • Make sure V Sync Count is set to Don’t Sync 

If you want to switch back to development for different VR device, just undo the changes above.



We recommend setting following settings for creating better VR experience:

Color space

    • Navigate to Edit > Project Settings > Player 
    • Under Other Settings make sure Color Space is set to Linear

You can read about benefits of the Linear Color Space in Unity documentation. In short – it makes colors better.



  • Navigate to Edit > Project Settings > Quality 
  • Make sure AntiAliasing is set to 2x Multi Sampling 
  • Normally, in a VR project you would set Anti-aliasing as high as possible. But since the Varjo headset is using the human-eye resolution Bionic Display™, you can save resources otherwise spent on anti-aliasing, while still getting a great image quality.


Rendering path

  • AntiAliasing requires Rendering path set to Forward


Get familiar with Varjo Plugin’s Assets

Here are the files you should expect to find in your project after successfully installing the Varjo Plugin and creating/importing your project.

Plugins folder

Varjo and OpenVR dll files.

Prefabs folder

VarjoUser Prefab

VarjoUser: Assigns VarjoManager. VarjoUser and tracking area are bound to each other. It is used for teleportation in the VR environment, while keeping real world bounds intact.  

TrackedDevices: Manages the SteamVR. Works the same way as in the SteamVR Unity plugin. Left and right controllers can be used to get location, orientation, and input data. If more tracked devices are used, they are either assigned runtime or dragged to the TrackedDevices list here.  

VarjoCamera: Prototype for view cameras. All applicable settings and scripts are used from this to render for Varjo. If you want to expose view cameras for individual customization you may do so from VarjoManager inspector in VarjoUser. 

Viewport cameras could be generated by selecting Generate viewport camerasIf you have the Copy Camera Components checkbox selected, the components of the VarjoCamera are copied to each of the individual view cameras. 

Scripts folder

VarjoMainCamera: Renders VarjoViewCameras and passes the combined render target to the plugin. 

VarjoManager: Initializes Varjo for the scene. Requires the Varjo headset or Compositor in windowed mode (refer to Developing without the Varjo headset) to work in the scene. Shows Varjo specific settings. Assigns and generates view cameras. If the VarjoCamera inspector field is left empty, the camera with the MainCamera tag is used for rendering. 

VarjoMatrixUtils: Utility functions for matrix operations. 

VarjoPlugin: DLL import. 

VarjoViewCamera: Rendering for one viewport. VarjoManager creates these. Do not attempt to manually add these.  

Editor/VarjoManagerEditor Editor interface of VarjoManager

VarjoSteamVR folder

Passthrough of stripped down SteamVR plugin wrapped under the Varjo namespace. This allows you to use the SteamVR™ tracking and input functionality that works in the same way as the SteamVR Unity plugin. 

Examples folder

Varjo Plugin for Unity is supplied together with the examples, you can see them in the Examples folder. Those are being covered on Unity Examples page.