NIS takes some resources, so if the processing can be limited to what we actually see and a “cheaper” bilinear upscaling is used on the periphery, it can further push the performance envelope without noticeable degrading of the visuals. It’s kind of like foveated rendering.
Very interesting thanks! Trying with Quest 2 now.
Initially it seemed it wasn’t playing nicely with Virtual Desktop so have moved back to Oculus Link. The default 0.7 scaling is a big step down from my usual 100% so I will do some tweaking.
At one point, I was finding that the shortcut Control+F2 / F3 was adjusting the gamma, not the sharpness! This is actually a very desirable feature, as currently virtual desktop is the only way to adjust gamma in MSFS in VR. Do you know how I accidentally triggered this? Thanks again for working on this !
Try bumping up the Pixel Override in Oculus Debug tool above 100% and driving the NIS scale down in percentage. I’m running 200% in ODB and 50% in NIS and gained a few FPS with a better anti-aliasing that I was getting prior to NIS.
using 10900k, 3090, reverb g2
oxr/taa=100/100
performs good with nis/sharp=0.8/0.2
during daylight conditions.
but at dusk/dawn/nights, the black banding is not good, like using rift cv1 at night, even at nis/sharp=1.0/0.2. it’s as if the color depth is lower…
I confirm this API has great potential. And it’s just NIS.
Dunno if can be anyway improved for better picture quality:
- landscapes deserves high sharpness but glass cockpit are shimmering above 0.3
- Motion Reprojection artifacts are heavier with NIS
It’s unbelivable that Asobo is completely blind regarding DLSS.
G2, 3090, 10900K
oxr/taa=100/100
nis/sharp=0.8/0.2
scaling=1 could technically be more optimized in the code as pointed out by @CptLucky8, so I’ll work on that eventually and maybe it will give you sharpening only at a lower cost!
Thanks @mbucchia for the tool!
I tested it on my system (9900k, 2080ti and G2) and it works.
However, I am a bit lost in understanding how exactly the MSFS render scale, NIS and OpenXR’s Customized render scale interact
(I read the description that comes along this tool but still…)
Prior to running NIS, these were my settings:
MSFS render scale: 80% (2259x2211pxl - I do not want MSFS to render below the G2 native res)
OpenXR render scale: 80% (image rendered by MSFS scaled up to 2824x2764pxl)
Now, what should I set in MSFS, NIS and OpenXR if I want MSFS to render at around 2160x2160pxl (the G2 native res) and then use the full potential of NIS to upscale the final image roughly to 2800x2800pxl - like in my “prior to running NIS” scenario?
Do I understand correctly that by using NIS, the OpenXR scalar is bypassed by NIS? Is the MSFS render scale setting still playing a role in the whole process?
Thanks!
Yes, I’ve tested it with the current beta that you can opt into and it works.
i just did some more testing and found out that using 130% in OXR and 100% in MSFS looks best for my eyes. Then i must set NIS scaler to 0.7 to have around 30fps.
For Repro i must lower OXR to 90%.
Hi MattB, did some more testing today, still with the 1. version. Still happy but found some problem: the dark colors have some problems. When you have a cloudy sky and set time to just before sunrise, you can see the clouds get much more color banding and other weird colors than without the plugin. Ok, i do not use the Beta version of MSFS which fixes color banding, but without plugin it is much better. So perhaps some small bug or this is due to the Nvidia NIS code? It Looks like the bit depth is too low.
P.S. using MS-Store MSFS, WMR-OXR with Reverb G2
Everyone THANK YOU for the testing in the last 2 days, this has gone beyond my expectations with people even reaching out to me with code fixes
I am amazed the reception and this community’s energy!
I put a lot of time into this between Friday night, Saturday afternoon and night and I feel that it was so worth it! Glad to hear that people are seeing the difference.
It seems like we’ve had people confirming that it runs on:
- Windows Mixed Reality
- Valve Index
- Pimax
- Oculus
It looks like we have 3 main scenarios emerging:
-
People using with a lower scale and getting pretty decent FPS boost (I’m reading between 5-15 FPS for some) with some acceptable degradation in quality.
-
People using with scale of 100% only to get some extra sharpening for their high-res headsets without regards for performance.
-
People who are not having too much luck and only getting a very small improvement (2-3 FPS). I’m thinking for those, perhaps your performance is CPU-bound(?), and the NIS scaling isn’t going to help much here.
Maybe there’s another category:
- People not finding the degradation in quality acceptable and likely won’t be using it?
Obviously 1 and 2 are great and were my targets!!
I’m going to do a pass of re-reading this thread and try to generate 2 template config files for 1 and 2 based on the experimental results.
There are still some more optimizations (SteamVR faster color mapping), settings (half-precision floaing point) and possibly features (fix foveated sharpening, include FOV modifier…) to try, but I’ll likely be a bit slower on those now that the main thing is here and usable with Alpha #3. Welcoming C++ developers if any to join the project and help!
There are also things I care about as an OpenXR advocate (remember, my main job
) in terms of compliance (really this software should be called MSFS2020_nis_scaler instead of just nis_scaler right now since it likely won’t work with too many other apps). This is a matter of the OpenXR philosophy.
Thanks again everyone!
You are right, today i compared the NIS FPS with the bilinear and it went from around 25 to 27. So a small gain is possible. I dont know if the foveated rendering extra-code is so efficient that it can be neglected. Perhaps it depends on the situation if it will gain some fps.
A good place to start if you have an NVIDIA card would be to test this exact scenario in non-VR mode with NIS enabled in the NVIDIA driver and the same settings you are trying with my OpenXR layer.
This way we can compare.
You have the visual issue both in non-VR and VR, then it must be a NIS scaler limitation. Not sure I can do much about it!
If the issue is only visible in VR mode, then it must be some tweak or something like that missing in my OpenXR layer.
Question for the community: do you find yourself wanting to switch sharpness often based on situations? I am thinking it would be pretty easy to make the config file define multiple sharpness presets, and a key stroke to switch between them. Could even make a text display or something when you switch. Oh and if so can you suggest some unused key combinations? It looks like Ctrl + F buttons might not be the best…
Edit - (disregard, this was when in Drone mode as ControlF2 seems to be mapped to adjust exposure by default )
I picked those at random and because they were fairly convenient to reach while wearing the headset. I’d love to hear suggestions for better keys and that wouldn’t interfere with either the game or the OS!
Ahh, indeed Ctrl F2 is assigned to “increase drone exposure”, so nothing to do with your file - apologies, I didn’t know it was possible to adjust drone exposure like that!
Disclaimer; I’ve not tried your app yet (hope too this evening).
Personally I need sharpness to be best for the Instruments/Garmin and in VR I generally Zoom in to the to achieve this, so thinking ahead if there’s an On The Fly way of increasing sharpness I’d link it to the Zoom Button on my HOTAS (Using Joy2Key).
That way I can use your tool to generally improve FPS elsewhere when looking around at the world, but then having sharpness for when I need it more. (If that makes sense!)
Good work. However I don’t understand the instruction:
App configuration
- First, retrieve the name that the application passes to OpenXR. In order to do that, run the application while the API layer is enabled.
Which application?
Not the author but…
I think the instructions are meant to be somewhat generic. “The application” in this case is MSFS itself. If you go through the instructions and run the sim and attempt to load into VR, you’ll get the log file which says “unable to load FS2020.cfg”. In theory some other game or app would say “unable to load appname.cfg”.
So in this case, you can just use the FS2020 config file that exists in the zip file and skip that step