Search the Community
Showing results for tags 'oxr'.
-
I have updated this first post to try to clear up some of the chaff now that DCS supports openxr natively. The original post in it's entirety is in spoiler tags below, I have lifted portions of it for this but I wanted to retain it for archival purposes. Since writing this I have upgraded my GPU from the 3070 to the 3080ti, as such I now have a little more knowledge on higher end hardware. Similarly DCS itself has changed in the ever marching way of progression that it has habit to do so, VR performance is now currently a little slower than it was 11 months ago. This is based on my experiences and testing, specifically with my set up. It isn't an all encompassing guide and by all means feel free to add your own insights and observations First things first set some baselines of what you want to achieve, do you want: - A clear, stable picture? All the bells and whistles? All the FPS? For performance metrics use the tools built into openxr toolkit. For tuning create a test mission that has your typically heaviest passive GPU workload, I use a rooftop pass over the top of Beirut. Some naming conventions: - OXR = OpenXR (Installed with windows by default) SVR = SteamVR (Steam App) WMR4SVR = Windows Mixed Reality for SteamVR (Steam App) OXRTK = OpenXR ToolKit (Obtainable from github) OXRDT = OpenXR Developer Tools (Also known as OpenXR Tools for Windows Mixed Reality - Sourced from Microsoft App Store) MR = Motion Reprojection For detail of the functionality of the excellent OpenXR Toolkit by @mbucchia please see the features list here. A clear, stable picture? Doing the following will typically be running DCS at framerates below the headset refresh rate, as such there will be some associated ghosting/stutter. Some scenarios will be smoother than others. Within the OXRDT set resolution to 100% and disable motion reprojection. This will give the ultimate image quality but with the caveat that you have to tune DCS to keep framerates above your own personal comfort threshold for stutter (mine is 50fps). If you're struggling to get it fast enough to eliminate the stutter for your test scenario, then the first thing to do is set the resolution in the OXRDT to default, this will set the resolution based upon your VRAM quantity. The calculation is based on the size of the three backbuffers with 4xMSAA applied should be no more than 10% of total VRAM. For the reverb having a 100% resolution of around 3160 pixels wide, the 8gb 3070 defaults to around 60-65%, the 12gb 3080ti defaults to around 95%. Within the OXRTK menu you can enable foveated rendering and upscaling to gain some frames back but at the expense of some image quality. Turbo mode can subjectively claw some FPS back in certain scenarios; typically it can help you gain 10-20% when running below refresh rate. It has been found that throttling the framerate to 55fps within OXRTK produces a minor improvement in apparent object stuttering when the headset is at 90Hz. This appears to be a sweetspot that has be correlated against by several different people, it may be different for you but it's easy enough to find your personal best compromise - fly low and level with the framerate throttled to 45fps, look out of the window whilst altering the framerate throttle and when you see an reduction of object ghosting leave it there. Based on the above, if you can consistently keep >60 FPS then it is worth trying out 60Hz refresh rate. Being above the refresh rate is nirvana and is ultimately smooth with zero artifacts. A couple of caveats to bear in mind: - the reverb has an apparent refresh rate flicker in 60Hz mode than can be hard to stomach, some people can, some people can't. It may be possible to train yourself to get used to it, treat it like getting your VR legs again. A little at a time is key, build it up in short sessions over days at a time. If you FPS drops below 60 then the smoothness of the display is not a good as 90Hz when below refresh rate. Therefore you ideally need some GPU overhead available to compensate for this - I use 60Hz and work on having a typical GPU frametime of 13ms or so which equates to around 77fps. All the bells and whistles? Doing the following will typically be running DCS at framerates below the headset refresh rate, however motion reprojection will be inserting synthetic frames to make it appear to running at refresh rate and will be very smooth. Image clarity suffers slightly and visual artifacting can be distracting. Within the OXRDT set resolution to 100% and set MR to always on (don't use auto, that's for app specific configurations and not implemented for DCS as of yet). Within the OXRTK menu make sure that MR is set to unlocked. With MR enabled and unlocked, DCS is now able to smoothly display framerates from 90 all the down to 30. This is a huge range and it will allow you to run far higher settings than you would think. Your FPS will be displayed as 90, 45, 30 or 22 (I've found 22 reprojected to not be pleasant) with occasional movement a few frames either way for a second or two when it changes reprojection fraction. The further from the 90hz refresh you get the more reprojection has to pick up the slack so will introduce more artifacts. The coding behind the OXR implementation of MR is virtually identical to WMR4SVR so should behave the same. The OXR MR can reproject at fractions of the refresh rate - 1, 1/2, 1/3, 1/4. For 90hz the fraction brackets work out at approximately 11ms 90fps, 20ms 50fps, 30ms 33fps (and we'll ignore 22fps because you don't want to be here), there is a small MR overhead to account for so the numbers aren't exact. WMR4SVR can only reproject at 1/2 refresh rate, therefore below 20ms 50fps it disables itself entirely. When tuning DCS you ideally want to be aiming to keep your FPS away from the bottom end of a fraction bracket. Therefore if you're getting 18ms you will be skipping between 1/2 and 1/3 brackets, best to turn some settings up and push it down into the 1/3 bracket. MR will keep things smooth but at the expense of some warping/ghosting particularly on edges of wings/cockpit frames. The slower the relative motion between the two edges the less it will artifact. If you're suffering with watery looking distortions/artifacts then ensure that you don't have shaking reduction enabled as the two don't play nicely. If you're ok with the artifacting you can run phenomenal settings, let it sit at 30hz reprojection and be on your way, unless you're in a weaker GPU then the world is your oyster. All the FPS? Within the OXRDT set resolution to default or below and MR to disabled. Within OXRTK enable upscaling of your choice (I wouldn't recommend dropping below 75% to retain most image quality) and enable foveated rendering (you can use a preset or play with the custom settings, it doesn't make a huge difference in performance). You may well be able to achieve the 90hz refresh rate by doing this although the use of upscaling will introduce additional shimmering that you will not get rid of. It is possible to balance out portions of the above to achieve a desirable outcome; it's not gospel, play with it yourself to find your own ideal. My current settings are as follows: - Reverb @60Hz, resolution override to 3200 pixels wide, MR disabled. FFR on Quality/Wide preset, Turbo mode enabled. NIS upscaling @75% with no sharpening. With DCS settings as follows I can comfortably keep below 16ms (>60fps) on Syria on all but the heaviest of missions in which case the CPU gets swamped - the GPU is still producing frames fast enough, the CPU simply can't supply it fast enough. The multithreaded engine update should hopefully alleviate this issue moving forwards.
- 688 replies
-
- 20
-
- openxr
- openxr dev toolkit
-
(and 1 more)
Tagged with: