Skip to content

Unity URP, HDRP & Post-processing

Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP), Post-processing#

Introduction#

Note: URP and HDRP are rapidly evolving. For efficiency reasons, we are testing only with the latest available URP and HDRP packages on the latest official LTS Unity version. 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.

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:

Now suppose we use an array of screens like this:

This image shows an example of issues with the bloom effect:

This image shows an example of issues with ambient occlusion and some shadows:

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.

Overscan#

Overscan is a rendering technique that aims at reducing the artifacts introduced by using post-processing effects with multi-display .

The idea is to render each camera with a bit wider field of view so that the effects that rely on neighbor’s colors (such as blur, bloom, SSAO, some shadows) can access that even at the borders. The picture is then cropped to only display the correct part.

Results with Overscan enabled:

To enable Overscan, enter a value in MVRManager > Advanced > Overscan. The value specifies the number of additional pixels that will be rendered on each side of the viewports. You will need to find the correct balance between intensity of the effects, quality of rendering and performances.

The value can also be increased in MiddleVR Config: Window > Advanced > Overscan.

Don't hesitate to try different values depending on the application or the system.

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: Ok with Overscan.
  • Auto-Exposure: Not ok by default but could be made to work by synchronizing the exposure value
  • Bloom: Ok with Overscan.
  • Chromatic aberration: Not ok because it modifies the rendering at the edges
  • Depth of field: Ok with Overscan
  • Grain: Ok
  • Lens distorion: Not ok
  • Motion Blur: Ok with Overscan
  • Screen Space Reflections: Ok with Overscan
  • 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 found at C:\Program Files\MiddleVR3\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.

  • Vignette : Vignette is not compatible with multi-display. It is disabled by default. You can enable it if your system has only one display
  • 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
  • Bloom : Ok with Overscan. It is left enabled by default. An Overscan of at least 50 will be automatically applied. Increase Overscan if the results are not correct.
  • 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
  • Motion Blur : Ok with Overscan. It is left enabled by default. An Overscan of at least 50 will be automatically applied.
  • 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.
  • Depth of Field : Ok with Overscan. It is left enabled by default. An Overscan of at least 50 will be automatically applied.
  • Ambient Occlusion : Ok with Overscan.

High definition Render Pipeline#

In addition to the MiddleVR package, you must add the MiddleVR_HDRP package at C:\Program Files\MiddleVR3\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.

Note: An Overscan of at least 50 will be requested when using HDRP

  • 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.

  • 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.

  • 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.

  • Bloom : Ok with Overscan. It is left enabled by default.

  • HDRI Sky : HDRI Sky is not yet compatible with stereoscopy It is disabled by default. You can enable it if your system is not using stereoscopy.

  • Contact Shadows : Ok with Overscan. It is left enabled by default.

  • Ambient Occlusion : Ok with Overscan. It is left enabled by default.

  • Motion Blur : Ok with Overscan. It is left enabled by default.

  • Lens Distortion : Lens Distortion is not compatible with stereoscopy or multi-display. It is disabled by default. You can enable it if your system has only one display and is not using stereoscopy.

  • Screen Space Reflection : Ok with Overscan. It is left enabled by default.

  • Screen Space Refraction : Ok with Overscan. It is left enabled by default.

  • Screen Space Shadows : Ok with Overscan. It is left enabled by default.

  • 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 system has only one display.

  • 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 system has only one display.

  • Depth of Field : Ok with Overscan. It is disabled by default.

  • Change Anti-aliasing to SMAA : FastApproximateAntialiasing is not compatible with multi-display. TemporalAntialiasing is ok with Overscan. By default anti-aliasing is set to Subpixel mophological AA.

The following effects do not require any adaptation to be compatible:

  • Channel Mixer

  • Film Grain (provided a tileable texture is used)

  • Lift, Gamma, Gain

  • Split Toning

  • Tonemapping

  • Color Curves

  • Color Adjustments

  • Shadows, Midtones, Highlights

  • Enhanced Subpixel Morphological Antialiasing (SMAA)

  • MSAA

  • Subsurface Scattering

Shaders compatibility#

Most HDRP shaders are compatible.