Single-pass instanced rendering and custom shaders
Introduction to stereo rendering
Virtual Reality (VR) and most Mixed RealityMixed Reality (MR) combines its own virtual environment with the user’s real-world environment and allows them to interact with each other. See in Glossary (MR) 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. Unity shares some parts of the render loop 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 significantly 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 platforms.
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 Management 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:
Open Project Settings (menu: Edit > Project Settings).
Expand the XR Plugin Management section, if necessary.
Select the settings page for the relevant provider plug-in.
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
The following platforms and devices support single-pass instanced render mode:
Android devices that support the Multiview extension
PlayStation®VR
Windows devices (tethered):
On desktop, the only tested and supported graphics APIs for XR are DirectX 11 and DirectX 12. For DirectX on desktop, the GPU must support Direct3D 11 and the VPAndRTArrayIndexFromAnyShaderFeedingRasterizer extension.
OpenGL and Vulkan aren’t supported for XR on desktop. Unity doesn’t prevent you from using or enabling them, but they’re untested for XR and might not work as expected. 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 isn’t supported, then rendering falls back to multi-pass mode.
Notes:
Unity doesn’t support single-pass instanced rendering in the built-in 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 Shader Graph.
Unity doesn’t support single-pass instanced rendering in the built-in render pipeline when using deferred rendering.
Stereo rendering
Single-pass instanced rendering and custom shaders