Nvidia Image Scaler

Just like AMD FSR sharpener, used to good effect in DCS VR, there’s a new Nvidia option that’s similar but doesn’t require any modding (with the latest driver).

Anyone tried it yet?

Ok, let’s be honest - we all knew I was going to try it.

To activate it is pretty simple, and the first title I tried was MSFS in 2D. MSFS works in a fake full screen mode called ‘Borderless Windows’ so I needed to do the following weird things, but most games should be pretty simple and per Nvidia profile. First off:

  1. Turn on the feature here…

  1. In your games you’ll now get a bunch of new resolutions to pick in-game. When you pick them it will upscale to the monitors native resolution. Example:

From this handy table we can see that if you have a 4K monitor then you’ll get a new resolution in-game to pick of, say, 2560x1440 (meaning the game is now rendering only 67% of the size from before), but it appears as native 4K on your monitor, just up-scaled and sharpened.

So you pick 2560x1440 in DCS, but then it appears as 4K on your monitor, just faster frames.

If you have a 1440p monitor, then you could pick 1706x960 and it’ll upscale it to 1440p - you get the idea.

Because MSFS doesn’t use Full Screen DX mode (Borderless Windows) then you can go to Nvidia Control Panel and do this via the ‘Change resolution’ for the desktop and it’ll work ok. e.g.

So a bunch of new ‘Scaling Resolutions’ appear, you pick one, and then start your game and you’re off to the races.

It seems to work pretty well. If you ticked the ‘Overlay Indicator’ in the first option screenshot, then you can also see it is working:

(top left NIS in green means it is upscaling and sharpening - if it appears in blue it means it’s just sharpening as the image is already at native resolution)


(oh, NIS indicator doesn’t appear in screenshot, plus in this example was the wrong resolution, so you’ll have to trust me - sorry)

Now off to try in VR, although don’t have a clue if it works in that…

5 Likes

I think VR is ignored, as it doesn’t apply it. Shame. One nice bonus is that performance for the driver in general seems improved, forgetting all this new scaler stuff though. MSFS seems much smoother.

A quick test with DCS and it crashed (Black Shark 2 strikes again…), but then I didn’t really need more FPS in 2D DCS with a 3080 Ti so not that upset (VR is another story). The crash might be because I have reshader on already, but not sure.

EDIT: Took out the Reshade bits and DCS seems to work at full screen mode, with the Nvidia upscaler working great so far. As DCS has a ‘Full Screen’ mode you just need to enable it globally without having to change any desktop resolution. With 67% upscale get about 150 fps at 4K, while native 4K is about 100 fps (given I’m using graphics settings that work for me in VR, and this is simple Caucaucaucuauscuauscuasus (sp). I think it doesn’t look as good as true 4K but still looks quite nice.

2 Likes

Even I saw that one… :wink:

meghan trainor no GIF by Music Choice

2 Likes

Thanks for the news, @fearlessfrog

As for MSFS in VR, I suppose the combo OpenXR+custom render scaling with the ingame slider actually does the same as this new nvidia magic, right? So the nvidia tech might make sense only if it is actually somehow better than the OpenXR+render scale combo.

2 Likes

It’s similar, but the difference with the Nvidia Scaler (and the AMD FSR used via Reshade) is that you can adjust the sharpening values easily. In VR being able to sharpen in the center is useful, and the setting is fixed in MSFS, so these things help with that. Plus the upscaling algorithms between what MSFS uses and how Nvidia and AMD do it are all different - one isn’t clearly ‘better’ but worth comparing for taste.

1 Like

Someone from the Microsoft WMR team (in their own time, just for fun) added a OpenXR layer to try this out the Nvidia Image Scaler in VR:

Some background and FAQ from the developer:

I guess I’ll give it a go with MSFS in VR and report back… :vr:

4 Likes

Well, on a quick try with a GA aircraft I think it works really well. I can’t tell if I’m just a cheap date for these things, and I seem to have an in-built preference for some sharpness and more frames, but I find it is really nice.

Here’s what I did, for those not sure of the installation instructions.

  1. Created a folder called OpenXR-API-Layers in my C:\Program Files folder (it needs to be there, so UWP apps like MSFS can see it).

  2. Downloaded the zip file XR_APILAYER_NOVENDOR_nis_scaler-ALPHA2.zip from https://github.com/mbucchia/XR_APILAYER_NOVENDOR_nis_scaler/releases - the ‘Alpha #2’.

  3. Put the entire contents of that zip in my new OpenXR-API-Layers folder.

  4. Right clicked on a script file called Install-XR_APILAYER_NOVENDOR_nis_scaler.ps1 in that folder and hit ‘Run with Powershell’ (it’ll ask for Admin permissions, live a little and say ok). This registers the layer, plus you have a similar named one to uninstall it if you hate it.

That’s it - all done.

You can check out the file FS2020.cfg for the default scale/sharpen values. I’m happy enough with them at defaults, and get about 10 FPS extra in VR, plus it’s very clear to me. I use in-game resolution of TAA 80 with OXR set to 100% manually, and reprojection off. Obviously do try your own combinations and sweeten to taste.

In game you can use also change some values live, and then go back to that .cfg file and save them in notepad etc. Here’s how:

Changing the sharpness can be done in increments of 5% by pressing Ctrl + Down arrow (or Ctrl + F2) to decrease and Ctrl + Up arrow (or Ctrl + F3) to increase. The new sharpness value can be observed in the log file (see README). When satisfied, you may then modify the config file to make it permanent.

You can use Ctrl + Left arrow (or Ctrl + F1) to enable/disable NIS and switch to a bilinear scaler (cheap scaler) instead, so you can see the improvements (hopefully) that NIS provides.

If any issues then holla, and you can check it’s working with in the System Status tab of the OpenXR for Dev Tools (the magnificent red underline here at the bottom):

If you need to check out the log file (to see what values you changed interactively) then it should be here %LocalAppData%\XR_APILAYER_NOVENDOR_nis_scaler.log

3 Likes

Further fiddling. For extreme clarity for IFR flying with lots of screens and, for example, the tiny numbers on the Aerosoft CRJ (the landing elevation value on the middle CRT is an ideal test as it’s about this → . ← big) I like the following.

Sim TAA 100 / OXR 100, no reprojection
scaling=0.8, sharpness=1.0 in FS2020.cfg

It looks a bit ‘harsh’ but man alive can you see everything in detail. Performs great with a Reverb G2 and 3080 Ti.

3 Likes

Thanks for the footwork. I bet that 3080 ti is a beast.

2 Likes

I’m glad I got it when I could, but there’s always a bigger fish. :fish:.

I must give it a try once I have got some time.
Thanks @fearlessfrog

Though my 2080ti looks like a fish in an aquarium in comparison to your HW.

Sad A Christmas Story GIF by filmeditor

OK, so I gave it a try and realized that I do not really understand (even after re-reading mbucchia’s initial post several times) the exact relation between game render scale, NIS scale and OpenXR scale :anguished:

Anyway, I settled on NIS scale 1 and sharpen 0.5. I understand that like that I am using just the sharpening but that is actually what I really wanted. The performance is as it was before attaching the NIS to the setup.

I think the way to think of the scale is that if the config of this thing is at 0.7 then it tells the game to render at 70% of whatever it was told to do before, and then the scalar up scales it to 100%. What that 100% actually is in pixels is the usual combination of game/oxr combined scales.

It’s like turning down the resolution render scale in-game, but then getting out in the display your native resolution. The benefit being better performance, as the game is doing less work per smaller frame.

Where does the performance gain come from if the graphics card is still doing all the work?
Is the fact that with lower resolution (game) that there is less data to be transferred (memory)?

Sorry, I’m a little confused with this feature.

1 Like

That’s a good question, I have coffee so I’ll have a go at explaining it like I see it. :coffee:.

This works because the the game’s rendering engine saves both CPU and GPU resources because it culls things in the z-plane (LOD, Level of Detail etc) because the resolution it is outputting is now less. Less vertex’s, means less calculations across the board.

If you run MSFS at 1080p it performs better (quicker frames) on the same hardware than if you tried to play at 4K. The resources running out on the GPU side are the various calculations in the pipeline for geometry, and a smaller viewport means less things get drawn because they are rejected earlier in the game render. It also helps that where there are shaders to apply across the frame, because the frame is now smaller that helps too. It’s not a case of not having enough VRAM to run at 4K, it’s usually the case of the GPU has to do more plain calc work that just doesn’t scale so well. More powerful cards have more function units like cores to help with this, so can do it.

Conversely the GPU loves things like scaling up algorithms, as it can apply them in parallel across the frame really quickly - scaling really scales well :slight_smile:. There’s no CPU to talk to, no, previous frame to refer to etc. It’s easier to take a buffer and apply a shader algorithm to it entirely than it is to work out the vertex’s of all those triangles, pixel shading and various other things game engines do.

Also, not on this subject but should say - this OpenXR NIS works for Oculus, SteamVR and WMR - it’s not just for WMR, so anyone can try it. This isn’t like DLSS that is using just Nvidia hardware, this is just an algorithm that takes a frame and upscales it.

5 Likes

Thank you very much for that explanation FF! Written so I could even understand it.

1 Like

You are basically correct.

The key is to use the NIS scaling algorithm instead of those of MSFS & OpenXR because it is superior to them.

Only I am still a bit confused when he referrs to 100% OpenXR as WMR native resolution. As far as the G2 is concerned, 100% OpenXR is way above the native G2 res (yes, I am aware it is a provision to compensate for the barrel distortion). I suppose he was talking in general terms.

1 Like

I think it’s because with the lens and counter-distortion then you can make a case for ‘what is a native resolution in VR anyway?’ :slight_smile:. It’s a useful term for reference in terms of supplying less or more than the display can use, but it’s not going to be ‘I have this panel, so I need to supply x by y pixels for the best clarity’. It depends on where you mean in the image - the center pixel is stretched, but the sides are compressed etc.

On a monitor it’s easy, as one to one frame buffer to each pixel rendered, but for VR that’s never the case - because we’re looking through Fresnel lenses on to something that’s had the opposite distortion applied.

The NIS is better because it uses a more sophisticated edge detection. A simple bilinear where you take a 2x2 matrix of pixels and make it 4x4 works by averaging out the difference - when means it looks blurry or soft (because it is a form aliasing). The NIS tries to make better guesses around averages of the chance of something being an edge, and then not just averaging the range - so less blur, because it keeps the edge. The sharpening you can see comes as a side benefit, because now you just apply that without even changing size.

Anyway, not sure if I’m making any sense, but the key thing is these sorts of scalars are very much ‘for taste’, so if you tried it with stock settings and it didn’t work for you, then there is no right or wrong.

1 Like

Does placebo count too? :slight_smile:

I settled on OpenXR 100%, MSFS render scale 100% and NIS 72%. I am not sure whether the image is better but I feel better :slight_smile:

Thanks for explanations, @fearlessfrog I appreciate it.

1 Like