Version: 2022.3
Language : English
Universal Render Pipeline compatibility in XR
Single-pass instanced rendering and custom shaders

Stereo rendering

VR and most MRMixed Reality
See in Glossary
devices require rendering the Unity sceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
in stereo. Unity XRAn umbrella term encompassing Virtual Reality (VR), Augmented Reality (AR) and Mixed Reality (MR) applications. Devices supporting these forms of interactive applications can be referred to as XR devices. More info
See in Glossary
supports two stereo render modes:

  • Multi-pass: in this mode, Unity performs a render pass for each eye. Some parts of the render loop are shared between the two passes, so multi-pass rendering is faster than rendering the scene with two unique camerasA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
    See in Glossary
    . Multi-pass mode provides the widest compatibility with existing shadersA program that runs on the GPU. More info
    See in Glossary
    and rendering utilities, but is slower than single pass instanced mode.
  • Single-pass instanced: in this mode, Unity renders the scene in a single pass using instanced draw calls. This mode greatly decreases CPU usage and slightly decreases GPU usage compared to the multi-pass mode.
  • Multiview: A variation of single-pass instanced rendering supported by some OpenGL and OpenGL ES devices. This option replaces single-pass instanced when available.

Note: The earlier technique of rendering the scene into a double-wide texture using a single render pass is no longer available.

Single-pass instanced stereo rendering is now available on most VRVirtual Reality More info
See in Glossary

Set the render mode

You can find the Render mode setting under XR Plug-inA set of code created outside of Unity that creates functionality in Unity. There are two kinds of plug-ins you can use in Unity: Managed plug-ins (managed .NET assemblies created with tools like Visual Studio) and Native plug-ins (platform-specific native code libraries). More info
See in Glossary
in Project SettingsA broad collection of settings which allow you to configure how Physics, Audio, Networking, Graphics, Input and many other areas of your project behave. More info
See in Glossary
. Each XR provider plug-in provides its own setting, if supported.

To set a render mode:

  1. Open Project Settings (menu: Edit > Project Settings).

  2. Expand the XR Plugin Management section, if necessary.

  3. Select the settings page for the relevant provider plug-in.

  4. Choose a mode from the list.

    Render mode options in the MockHMD provider plug-in

Note: Some plug-ins name the setting Stereo Rendering Mode.

Single-pass instanced render mode support

Single-pass instanced render mode is supported on the following platforms and devices:

  • Android devices that support the Multiview extension
  • HoloLens
  • PlayStation VR
  • PC devices (tethered):
  • For DirectX on desktop, the GPU must support Direct3D 11 and the VPAndRTArrayIndexFromAnyShaderFeedingRasterizer extension.
  • For OpenGL on desktop, the GPU must support one of the following extensions:
    • GL_NV_viewport_array2
    • GL_AMD_vertex_shader_layer
    • GL_ARB_shader_viewport_layer_array

If you set the Render Mode to Single Pass Instanced when that mode is not supported, then rendering falls back to multi-pass mode.

Note: Unity doesn’t support single-pass stereo instancing in the built-in, legacy render pipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
when using deferred rendering.

Universal Render Pipeline compatibility in XR
Single-pass instanced rendering and custom shaders