Unity URP, HDRP & Post-processing
Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP), Post-processing#
Introduction#
Recent versions of Unity have introduced new render pipelines aiming at modernizing the default render pipeline. The rendering is more realistic, in part because of the use of a lot of post-processing effects.
Unity is effectively rendering the virtual world through a virtual camera and tries to replicate real-life camera's imperfections.
Those post-processing effects add those imperfections that make the rendering more cinematic like bloom, chromatic aberration, lens distortion or vignette, characteristic of real-life cameras.
Those effects are often problematic in CAVEs because they are often computed in screen-space, which means they are not really 3D in nature.
The biggest issue is that in a CAVE we use multiple screens, and those post-processing effects are not meant to be used with multiple screens. This causes artifacts and discontinuities at the junction of the screens.
This image shows the example of a lens distortion. Each screen has a correct distortion, but the junction of the screens is broken.
This is why MiddleVR tries to modify all the parameters and post-processing effects that might break the continuity between screens.
Note: MiddleVR is very conservative and tries to achieve perfect synchronziation between all the screens. If your application tolerates some small mismatch, you can experiment by enabling individual features and see what works for you.
Note: URP and HDRP are rapidly evolving, and while we did our best to cover all the possible cases, some bugs might occur. In this case don't hesitate to contact support@middlevr.com.
Post-Processing#
Unity offers post-processing effects in the “Post-Processing” package.
Note: post-processing v2.x causes frustum issues. Make sure to use package v3.x.
- Color Grading: Ok
- Ambient occlusion: Not Ok since it is in screen space and thus not contiguous along the edges of the screens
- Auto-Exposure: Not ok by default but could be made to work by synchronizing the exposure value
- Bloom: Not ok since it is also in screen space
- Chromatic aberration: Not ok because it modifies the rendering at the edges
- Depth of field: Not ok. Probably a custom Depth of Field shader could be made to work
- Grain: Ok
- Lens distorion: Not ok
- Motion Blur: If you only have a flat array of screens it would probably work, but probably not at the edges if you have screens at an angle
- Screen Space Reflections: Seams will probably not be correct
- Vignette: Works on each individual camera but probably does not make sense in a typical immersive environment
Universal Rendering Pipeline#
In addition to the MiddleVR package, you must add the MiddleVR_URP package at
C:\Program Files\MiddleVR2\unity_packages\com.middlevr.urp.tgz
and add
the MVR_URP prefab from this package to your scene:
The MVR_URP gameobject has specific parameters for Universal Render Pipeline.
- Disable Vignette : Vignette is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
- Disable Chromatic Aberration : Chromatic Aberration is not compatible with multi-display. It is disabled by default. You can enable it if your system has only one display
- Disable Bloom : Bloom is not compatible with multi-display. It is disabled by default. You can enable it if your system has only one display
- Disable HDRI Sky : HDRI Sky is currently not compatible with stereoscopy. It is disabled by default. You can enable it if your VR system is not using stereoscopy
- Disable Motion Blur : Motion Blur is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
- Disable Lens Distortion : Lens Distortion is not compatible with stereoscopy or multi-display. It is disabled by default. You can enable it if your VR system has only one display and is not using stereoscopy.
- Disable Depth of Field : Depth of Field might not be compatible with multi-display. It is disabled by default. Experiment with your application You can enable it if your VR system has only one display
High definition Render Pipeline#
In addition to the MiddleVR package, you must add the MiddleVR_HDRP package at
C:\Program Files\MiddleVR2\unity_packages\com.middlevr.hdrp.tgz
and add
the MVR_HDRP prefab from this package to your scene:
The MVR_HDRP gameobject has specific parameters for High Definition Render Pipeline.
- Profiles : Automatically adapts the HDRP settings for a particular profile. Virtual production generally does not have stereoscopy so it can support effects that won't work in stereosopy. 'Max tolerance' enables more effects than 'Min tolerance'.
-
Disable Vignette : Vignette is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Chromatic : Aberration Chromatic Aberration is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Bloom : Bloom is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable HDRI Sky : HDRI Sky is not yet compatible with stereoscopy It is disabled by default. You can enable it if your VR system is not using stereoscopy
-
Disable Contact Shadows : Contact Shadows is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Ambient Occlusion : Ambient Occlusion is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Motion Blur : Motion Blur is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Lens Distortion : Lens Distortion is not compatible with stereoscopy or multi-display. It is disabled by default. You can enable it if your VR system has only one display and is not using stereoscopy
-
Disable Screen Space Reflection : Screen Space Reflection is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Screen Space Refraction : Screen Space Refraction might not be compatible with multi-display depending on conditions. It is enabled by default. You should experiment with your application
-
Disable Screen Space Shadows : Screen Space Shadows is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Exposure : Exposure is not yet compatible with multi-display. It could be made compatible by synchronizing the exposure value on all cluster nodes. It is disabled by default. You can enable it if your VR system has only one display
-
Disable White Balance : White Balance is not yet compatible with multi-display. It could be made compatible by synchronizing the white value on all cluster nodes. It is disabled by default. You can enable it if your VR system has only one display
-
Disable Depth of Field : Depth of Field is not compatible with multi-display. It is disabled by default. You can enable it if your VR system has only one display
-
Change Anti-aliasing to SMAA : FastApproximateAntialiasing and TemporalAntialiasing are not compatible with multi-display. By default anti-aliasing is set to Subpixel mophological AA.
Shaders compatibility#
Most HDRP shaders are compatible.