Provide Color Space, Tone Mapping, CAS Shader Strength and post-processing effects controls in VR

Context

FS2020 is embedding a number of post-processing effects which are all set in the UserCfg.opt file.

However, some of these effects are either too strong or too weak depending on personal tastes, and some prefer disabling a few to save visual quality or compensate for the effects implementation.

Furthermore, FS2020 Update 7 is now using the famous CAS Shader by Timothy Lottes. It is a very capable shader doing “Contrast Adaptive Sharpening” (hence the name) and image stretch all in one, and it is the shader processing the pixels to transform the smaller FS2020 Render Resolution image into the Headset/Monitor Display Resolution. This shader is designed to accept a “strength” value from 0 to 1 in order to adjust the sharpening effect (see references below) but there is no use-adjustable simulator setting for it.

Suggestions

I’d suggest FS2020 to offering and using the following post-processing and user settings options. Most are missing and mandatory for achieving a better experience with the game.

Tone Mapping Gama slider

Allowing adjusting the game dynamic range because no all headsets have any brightness adjustment nor are restituting the full sRGB spectrum.

Tone Mapping Brightness slider

Allowing adjusting the game white clipping because some headsets panels are not fully sRGB (the Index is clipping whites a little bit more than the Reverb G2 for example) and this shows badly when in VR.

CAS Sharpen Strength slider

Allowing anyone adjusting the strength based not only on personal taste but also based on the render-to-display size ratios. In effect, it may require more or less strength to make this effect not overdone when using certain different size ratios. NB: UserCfg.opt might only supports 0 or 1 but could be supporting 0.5 for example. See References below for more details and source code.

Color Space and Display Devices

Whether it is a monitor, an Oculus headset or any other display device, and whether the extension is present or not, end users would be able to overriding the default in a unified way.

Oculus headsets

Use the dedicated OXR extension which gives applications the capability to retrieve the specific chromacity primaries for the headset: XR_FB_color_space

This is using a pre-determined enum, with a limited set of pre-defined values. Oculus Headsets users might greatly benefit from it if FS2020 would be using it, but in general everyone would benefit from the equivalent function natively supported in the game (see below).

Other headsets and any display devices

Provide the end users with the means to setup the color space with the same input values as the XR_FB_color_space extension (Chromacity Primaries in CIE 1931 xy).

This could be directly set in the UserCfg.opt json file or in a companion file.

Other UserCfg.opt Settings

I’d also suggest FS2020 provides the following optional settings:

Allowing anyone to enable/disable the following:
EyeAdaptation, ColorGrading, Dirt, FilmGrain, Vignette


Please also make sure voting for these:
Implement a metering system better suited for VR
Render the Sun with a fading disk when bloom is disabled
Bake Ambient Occlusion in the cockpit when Ambient Occlusion is disabled
Can you please add a “Sun Glasses” mode :sunglasses: ? (not a joke)

Notes:
What is the CAS Shader (info and demo app)


02FEB2021:

Added Using XR_FB_color_space extension.


01APR2021

About “Other headsets and any display devices”

My idea is providing the end-user a configuration option (in UserOpt.cfg file for example) in order to override the values (in case of an Oculus headset), or to specify the values (in case of any other headset of in the absence of the extension).

For example, the OXR doc is saying:

XR_COLOR_SPACE_QUEST_FB. Unique color space.
Similar to Rift CV1 using D75 white point

Color Space Details with Chromacity Primaries in CIE 1931 xy:
Red: (0.661, 0.338)
Green: (0.228, 0.718)
Blue: (0.142, 0.042)
White: (0.298, 0.318)

The idea therefore is to support the following in the UserCfg.opt file (for example):

{ColorSpace
  Red [0.661, 0.338],
  Green [0.228, 0.718],
  Blue [0.142, 0.042],
  White [0.298, 0.318]
}

In addition, for those using different headsets, it would best having multiple {GraphicsVR sections which would be identifying for which headset they are used for.

For example the first section is like this:

{Video
	Adapter "NVIDIA GeForce RTX 2070 SUPER"

The following could be added in the GraphicsVR section:

{GraphicsVR
	Headset "Valve Index"
    ...
}
{GraphicsVR
	Headset "Reverb G2"
    ...
}

References:

CAS Shader Source Code

CAS enhances sharpness and local high-frequency contrast, and with or without added upsampling.

FidelityFX-CAS/ffx_cas.h at 9fabcc9a2c45f958aff55ddfda337e74ef894b7f · GPUOpen-Effects/FidelityFX-CAS · GitHub

20190524 - New algorithm, adjustable sharpness, scaling to 4x area.

FidelityFX-CAS/ffx_cas.h at 9fabcc9a2c45f958aff55ddfda337e74ef894b7f · GPUOpen-Effects/FidelityFX-CAS · GitHub

Nvidia has one. Tick Experimental in the game-ready settings and then you can have the overlay in the sim. Plenty of common effects to choose from. It’s almost like reshade but not as comprehensive.

Do you mean in GeForce Experience? If so, some are not using it all all because they have either no use or this is taking taking unnecessary resources.

But more importantly, adjusting brightness and/or colors via a post-processing Shader is not solving the problems I’m highlighting in this post and this has nothing to do with the subject. Please let me try explaining what is happening, I’ll let you search online the technical terms.

Just looking at the output (to keep it simple I’ll use only 1 gray value from 0 to 1): the simulator is rendering a white square spanning 5 pixels which are displaying as a gradient of grays from 0.8 to 1.2, but it is clipped to the [0,1] range for display obviously and as expected:

Source: 0.8 | 0.9 | 1.0 | 1.1 | 1.2
Output: 0.8 | 0.9 | 1.0 | 1.0 | 1.0 (clipped)

a) Applying a Shader to lower the luminosity by 0.2 from the source (in FS2020):

Source: 0.8 | 0.9 | 1.0 | 1.1 | 1.2
Output: 0.6 | 0.7 | 0.8 | 0.9 | 1.0 (pre process -0.2)
Display: 0.6 | 0.7 | 0.8 | 0.9 | 1.0 (clipped) <— no loss of signal between output and display

b) Applying a Shader to lower the luminosity by 0.2 at the output (after FS2020):

Source: 0.8 | 0.9 | 1.0 | 1.1 | 1.2
Output: 0.8 | 0.9 | 1.0 | 1.0 | 1.0 (clipped)
Display: 0.6 | 0.7 | 0.8 | 0.8 | 0.8 (post process -0.2) <— loss of signal, it is just dimming the clipped white

NB: this is a simple illustration of 1, and only 1 of the problems with post-processing this (there is more like quantization errors, color shift, etc…)

In other words:

The rendering is done in an unclipped linear space, then it is tone mapped, and then converted to a non linear sRGB color space which is clipped for display, and this is why you can’t post-process what I’ve written above otherwise I wouldn’t have requested it.

2 Likes

Thanks for the insight. Actually, I was hoping they’d include those options in the sim too. I remember them saying as much early on in the development process a year or so ago.

GeForce Experience is not applicable to the picture visible in the headset (at least for the Reverb G2), it affectes only the picture on the monitor.

@stekusteku - same for Samsung Odyssey and any other HMD. Same for Reshade, Nvidia Control panel - all just afect 2D Monitors. We really need a way to adjust color saturation etc. internally. All the HMD with OLED Displays, although great displays, dont do this sim justice.
Colors are over saturated in sunlight, and there is absolutely no way to adjust them.
Other sims I finally got issue solved with mods, for FS2020 such solution is missing.

Attached a pic from my Odyssey (left) and Monitor (right), just to show the (harsh) difference.

25dec0850cb21058bb613819288e1b42371e0eac_2_345x226

3 Likes

bumping for more time for others to share their comments.

Brightness is way more than natural leading to washed out colors and an overall haze effect.
Any capability to adjust color/brightness/contrast would be most welcome.

5 Likes

I’ve added the following to the OP

A reply to keep the topic open and unsolved :slight_smile:

1 Like

Thank you! It is unfortunate they are only considering a “brightness” slider in the VR Q&A items (where does this one come from?!?) and on top of that, as an item of priority 2…

In all honesty this is something like 3 sliders in a UI and 3 shaders “constants” to add. If they didn’t protect their shader binaries we could do ourselves like I did in the past with XP11:

1 Like

Hi, I agree with you, we should have some sort of color correction control and the most important being a SHARPEN filter such as the one we can find in iRacing and ACC. The iRacing one is absolutely amazing, it literally improves your VR experience in an incredible way.
I have a G2 (LCD panels), and I find it to be the opposite for me, I am experiencing washed out colors with a lack of contrast (I understand haze atmospheric effect decontrast things, but still), especially when in a full sun light scenario.
I find, in my case, the visuals being the best at dusk or dawn, I am not super crazy about their sun light shader, I find their lighting most pleasant and pretty when in an ambient, more diffuse lighting scenario, but that’s just me.
Let’s vote for CC parameters : )

I have aRevert G1. It is way too bright in the sim, cockpit interiors are perfect, but outside, even on a very average April morning Illinois, it’s blindingly white.

1 Like

I often resort to using the yellow filter “night mode” or whatever it’s called on the quest 2 to save my eyes!

Brightnesss/contrast/colour adjustments would deliver a massive improvement to picture quality for no performance loss, its probably my number one feature wish

1 Like

updated the OP with more information about the chromacity primaries suggestion.

Most definetely a feature I would like to see as I fly only in VR since I got the G2. But the view from within the headsed is too bright / washed out…

Not just VR, can we have these for PC flying as well? With HDR on I can’t fly with the cockpit view because the horizon is blazing white. It thinks I’m looking at the controls and the eye adaptation just bleaches everything outside the aircraft. In the default pilot position in most of the aircraft you’ll get more interior in the shot which forces this effect, even though you want to be taking in the scenery OUTSIDE. Nothing like having to go third person outside a plane to kill the immersion! It makes VFR impossible if you want to be able to see inside and outside at the same time!

1 Like

After careful consideration I have determined that this message may be in violation of the guidelines, so as a precautionary measure it has been removed.

msg 345703/18

Do we have any updates with this issue?

In the Q&A this week Asobo said they’re going to look at VR Later in the year, so there will likely be no changes any time soon for this specific area.