Nvidia Image Scaling NIS and VR

Sorry, as a relative VR newbie I find all this quite confusing, between settings in Windows Reality Portal, SeamVR for WMR, OpenXR Developer Tools, OpenXR NIS Scaler… I’m lost! My understanding was that to use the settings under SteamVR (such as World Scale), I needed to set SteamVR as OpenXR runtime. And that doing so meant that your great tool would not work as it required WMR as runtime. That being said, for reasons that I cannot understand the render resolution at 100% in SteamVR is for some reason way lower than it should be leading to way worse graphics, so I have to stick to OpenXR Deeloper Tools.

As I was saying… I am very confused :wink:

Look what else you can do with NIS
LeadZeppelin

This is my 4k TV used as a monitor and with 2D NIS then upscaled to VR. Looks even better in VR. Thanks man, this is awesome!

You should try 457.30 - it’s the smoothest in VR

What exactly are you doing there? What do you mean by “2D and 3D NIS”?

NIS is Nvidia Image Scaling. What it does is it takes the original image pre-process and reduces the resolution which frees up the CPU and GPU and then post process uses upscaling to bring the image back to it’s original state. This gives you tons of headroom to increase settings and get a better smoother image than before. If you have a 4k monitor you can also use NIS on it for the best image I have ever seen (hence 2d + 3d for VR) . I use my TV as a monitor and it almost looks 3d now. Just google NIS for more info. If you use NIS with a 1080 image the increase is less than doing it with a 4k image. Must be the garbage in garbage out thing. I suggest using the 496.76 driver instead of the latest for less shimmering.

Doesn’t have NIS, you need 496.76 or higher.

Well if you roll back it’s still says image scaling in Nvidea for some strange reason but that is turned off the NIS tool works from Matt Bucchia

@Kingofclubs4680 and @Pilotpete123

Let me clarify the story of NIS and driver support.

First let’s clarify GPU support

NIS is simply a graphics shader - this means a program that runs on the GPU and performs operations on every pixels of an input image, to produce an output image. Think of it as graphic shader = GPU program.

Graphics shaders have become a pretty generic thing now, almost like traditional applications: any processor (here GPU) with the right capabilities can execute them.

So remember how there used to be things like “some CPU don’t supports SSE, and hence cannot run SSE optimized applications”? Well that is also true for GPUs now, except the “thing” that indicates compatibility is called the “Shader Model”.

So as long as your GPU supports a Shader Model that is sufficient to run the NIS shader (program), then your GPU is capable of doing NIS.

From the NIS doc itself:

So here it is Shader Model 5.0 is the requirement. And this version has been standard since pretty much DirectX 11.

So for short, as long as your GPU – OF ANY BRAND – is compatible DX11, then it can perform NIS.

Now let’s talk about Driver support

The GPU driver is NOT really involved in NIS. I mean yes the GPU driver eventually allows the execution of our NIS graphics shader, just like it enables any other kind of shaders implemented by the game itself (eg: TAA, motion blur, and other visual techniques).

So what is this NIS option in the GPU driver, and why is it only on recent NVIDIA drivers?

There are 2 traditional ways of performing NIS:

  • One way requires the application to invoke the NIS graphics shader itself, meaning the application is NIS-enabled. This does not involve the NIS feature of the GPU driver at all.
  • Another way is to enable all applications including the ones that are not NIS-enabled to still run the NIS graphics shader just before the display. This is what the NIS feature in the GPU driver does.

The problems with the GPU driver approach are:

  • It’s only supported for NVIDIA drivers, since it’s their technology. But don’t get it wrong, in theory ANY GPU driver could implement the addition of the NIS graphics shader.
  • It only works for contents displayed on computer monitors - because this is where the driver inserts the execution of NIS. It does not work for VR.

The software that I developed (called “application layer”) is a hybrid of both approaches: it is implemented on the “application side”, technically sitting between the application (eg: FS2020) and the OS, and it functions just like the GPU driver option, meaning that with applications that do not support NIS themselves, the NIS OpenXR software will invoke the NIS graphics shader just before handing off the images to OpenXR, which then sends those images to the headset display.

Anyway, a picture is worth 1,000 words, showing the various ways of making NIS:

I hope it clarifies things.

PS: The reason I put “quality is inferior” for the GPU driver and application layer approach is because the games does not know that NIS is happening, meaning that some things done by the game might violate the best practices of NIS, hence resulting in lower visual quality than when the games does NIS itself in the best possible conditions.

14 Likes

@mbucchia That’s a great explanation thank you… and also the reason why I could roll back to 457.30 Nvidia (hence your statement The GPU driver is NOT really involved in NIS.) and still get great results. Genius :-). The strange thing is that with my 1080 the 457.30 driver works so much better for me and many others especially with a quest 2. Also I have found that before opening MSFS or even VR for that matter your tool works best when I open it first.

I am also using his tip: TnT Quest 2 Settings - Sharp and SMOOOOTH!

It’s never been so clear and so sharp!

You’ve turned my Quest2 into almost an HP reverb or perhaps an Aero….? Well that’s how clear it is.

4 Likes

Posted already but wanted you to know I installed today and it’s working great with my Valve Index and rtx 3980.
Hope you have the same results.

Many thanks for the explanation.

This might be a stupid question but would I get the best (or worst) of both worlds by setting OPEN XR NIS for VR and NVIDIA driver NIS for monitor at the same time in case I wanted to play some days on monitor and some days on Quest 2?

If both NIS are running then do they enhance or degrade each other?

I haven’t done some benchmark myself, but when you are in VR, the app is still displaying to the 2D monitor as well. So if you have NIS enabled in the driver, I expect the sharpening pass to be executed for the monitor display, which would consume some GPU time. So I estimate that having both enabled at the same time would degrade the performance of your VR experience a little, maybe by 1-2 FPS.

Though I would love if someone could give it a serious try and compare the benchmark performance.

I wish I had read this from the start. A very clear and understandable description. Instead, I was watching a ton of basically useless YT videos describing only the process with no decent explanation, wrong settings, and half-truths. Thanks a ton for this.

Hello. I am currently getting a CTD. I will load the NIS upscaler, then OpenXR, then will open MSFS2020 in 2D mode. Once all is loaded and I get to the main menu, I will push the buttons to activate my VR Headset (Reverb G1) and then the game will just crash there, reverting back to Windows. Not sure if it’s a DX11/12 problem (I’m running DX12, how do I revert to 11 if that’s the case?), but it seems to not be working at all. Any help is appreciated.

Reverb G1
RTX 2080 Super

DX12 is not fully supported by NIS. To change to DX11, go to Options > General Options > Graphics. The option to change the version of DirectX is available there. See screenshot below:

1 Like

Thank you! This is simply amazing. It’s not just the sharpness/clarity this has given, but it’s allowed me to play this game again, where before it was a vomit-inducing slideshow.

1 Like

Try a different USB3.x Gen 2 connection… at least to eliminate that possibility.

Got a 12v USB3.1 Gen2 hub designed for data ?

I have one hub that’s 3.0 designed for data which I use for connecting my HOTAS. I have a single 3.2 Gen 2 port that I put my headset in.

Power supply from USB wire is 5v. If you’d use hubs designed for high data transfer, pick the ones that has 12v external supply. The 12v is for circuits inside the hub. USB wire still carry just 5v.

With 12v supply, the hub can pull up to logic 1 from logic 0 faster, allowing you to communicate high freq better. There’s losses in the Usb wire, worse at higher speed, so the digital “square” wave gets deformed. The 12v pull up circuits allows faster repairing of high frequency digital waveforms before it gets to motherboard.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.