Jump to content

OpenXR Toolkit Tuning Guide (updated 21/02/23)


edmuss

Recommended Posts

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: -

  1. 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.
  2. 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.

image.png

 

Spoiler

Hi all, due to the main thread becoming something of a monster I thought I would start this to hopefully aid people in tuning the Open Composite openxr mod for DCS by using the OpenXR Developer tools and OpenXR Toolkit.

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 🙂

This is also based upon the open composite mod alone and not necessarily applicable with other mods involved. Also considering that the mod is correctly installed and set up. YMMV and all that jazz!

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?
  • None of the FPS but clear, stable picture and all the bells and whistles?
  • Flying with a Casio calculator watch for a GPU?

For performance metrics use the tools built into openxr toolkit or openxr dev tool, both show the same information one way or another. 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: - (edit: 17/05/22 Some updated info and naming for the various components)

OXR = OpenXR (Installed with windows by default or available from sourceforge)

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

 

A clear, stable picture?

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. My 8gb card defaults to around 60-65%; image quality loss is fairly minimal compared to WMR4SVR in experience.

Within the OXRTK menu you can enable foveated rendering and upscaling to gain some frames back but at the expense of some image quality.

Your framerates will be unlocked but should be stable.

All the bells and whistles?

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/4 brackets, best to turn some settings up and push it down into the 1/4 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. Note that rotor blades cause havoc with this because it's shadows and model geometry moving at VERY high speeds.

MR is more suited to high flying with regards to artifacts as this keeps the relative motion low.

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.

edit 15/05/22: the MR artifacting appears to have been improved upon and it far better than previous.  Helos don't turn into a screen of jelly all the time now  🙂

All the FPS?

Within the OXRDT set resolution to default 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 of 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.

None of the FPS but clear, stable picture and all the bells and whistles?

See the below edit 08/04/22.

Flying with a Casio calculator watch for a GPU?

See the below edit 25/04/22.

 

These are my observations from testing and tweaking. Each and every one of us is different with different setups and requirements as such there is no right and wrong but I believe that the above is a pretty fair generic guide to get you started 🙂

I will probably add to this as the mod develops and matures. Hopefully this will help at least one person, if so then it was worth the hour it's taken to type on my phone 😄

For reference in the A10C with my 3070 I can run 75% resolution, medium to high DCS settings with MR disabled and have a framerate over 50fps over Beruit. Over open ground in Syria I regularly see 55-65fps. In Caucasus I can either turn resolution to 100% or get framerates up to the high 70s. This performance is single player only so obviously things will change in multi player.

edit: This thread is intended as a guide to help set up and share experience and knowledge of setting up the OXR toolkits.

If you've got setup or configuration issues then you'd be better to ask in the main thread over here as there's a much wider range of knowledge and information there on the subject.

edit 30/03/22: Regarding reprojection

When tuning your DCS settings to aim for a specific target fps in order to keep in a specific reprojection bracket remember the following.

There is approximately 5fps worth of overhead required to keep a specific bracket active, therefore if you want to keep in the 45fps reprojection bracket then you will need to achieve a minimum of 50fps to do so. Your GPU frametime will be reading at <20ms (>50fps) but fps will be locked to 45fps (24ms).

edit 04/04/22: Regarding reprojection again

Whilst an issue with the OXR reprojection within DCS has been identified, the fix, if indeed possible, is not necessarily simple to implement and is looking to take some considerable developer time.

As such, the ETA for the fix will be two weeks (DCS time)....

😄

In all honesty, it will hopefully come when it comes!

edit 08/04/22: Regarding framerate locking

Following conversations with devs and clever people on discord, if it's possible to lock your framerate to half refresh then the built in v-sync/reprojection in OXR can keep it all a lot smoother whilst freeing up GPU time to render more pixels and shiny stuff 😄

I believe that this built in v-sync is analogous to oculus ATW.

@nikoel has been flying his apache around locked by AMD drivers to 45fps and claimed a smooth, stable image with all the bells and whistles turned on.  As an nvidia user it is not possible lock VR framerates with the NVCPL, however it is possible with RivaTuner Statistics Server (RTSS).

Locked it to 45fps, lo and behold, perfectly smooth image.  I do see some minor ghosting on the 3-9 line but anything in the front 150° arc is butter smooth.  Upshot of this is previously I was running 75% resolution with med/high DCS settings to keep it around 60fps, now I can run 130% resolution with high DCS settings and it's just as smooth for the most part that is important!

As with all things, try it out, YMMV but it's certianly a very positive for me.

edit 10/04/22: Regarding high CPU times with locked framerate

During testing with the locked framerates I've noticed that the appCPU times in OXRDT performance overlay are locked to the FPS limit set, that is 22ms for 45fps.

My normal appCPU time is 11-14ms for my typical testing so seeing it jump to 22ms was somewhat alarming. This appears to be a normal function of the OXR runtime and is just the CPU performing a wait function to match the FPS times. As to whether the increased CPU latency causes a significant issue is yet to be seen.

I would ask anyone who's tried out the RTSS framerate lock and plays MP to see if it upsets performance. Hopefully it shouldn't do 🙂

edit 25/04/22: Regarding running DCS VR on a Casio calculator watch.

If you're running on a GPU that necessitates the use of lowhttps://forum.dcs.world/profile/13001-lefuneste01/ resolutions in OXR to achieve your desired frametimes then you can use the 3Dmigoto mod by @lefuneste01 to sharpen the HUD/MFD text a little to mitigate the blurriness.

edit 15/05/22: Regarding motion reprojection - currently (as of 15/05/2022) the artifacts caused by enabling motion reprojection appear to be quite significantly better than when this guide was written.  Still not perfect but much better, this has been reported by others as well.  I am currently still on the original manual install 0.6.3 version of OC_ACC and using v1.1.0 of OXRTK.

edit 17/05/22:  Added some clarifications to the abbreviated names as suggested by @Dangerzone  Also noting that the developer tools are now simply called OpenXR Tools.  I'll not ammend any other abbreviations throughout this thread because it will be a nightmare!

edit 24/07/22: It's come to my attention that the upscaling within OXRTK different behave in the same manner as it used to in vrperfkit; I'm not sure if this is a recent change or not though.

In vrperfkit if you set upscaling >100% it would act as a form of supersampling at the expense of performance, in OXRTK it actually reduces the target render resolution the further away from 100% you go, in both directions. I have noticed that the image stability (specifically the micro aliasing introduced by the upscaling) appears to be lessened when running >100% and gives a cleaner image.

Running the G2 at 100% (3160 wide) FSR 150% has given a solid 10fps uplift and I'm touching on 80-85fps at times now on Caucasus with a really nice image quality 🙂

edit 08/09/22: Latest release of openxr runtimes 112.2209.2003 includes improved VRAM management to enable reprojection to be far more stable.  Gone are the constant performance tanks when switching airframe or restarting a flight.  Now reprojection should stay enabled at all times and not drop to a 15fps slideshow.  This works for low VRAM GPUs, I helped test with my 8GB 3070 with very positive results.  It's unlikely to make any difference to those with >12GB VRAM but basically anyone with a 3080ti and below on team green should see more stability; I'm unsure if the problem existed with team red with their 16GB cards.

edit 09/10/22: The latest versions of openxr toolkit has a built in framerate limiter so there is now no reason to use external limiters (RTSS / Radeon chill) which is a bit of a hacky way of doing it.

Note that if you limit the framerate, the GPU will be sitting idle for roughly the limit in ms minus your appGPU. Therefore 45fps (22ms) limit with 12ms appGPU would result in approximately 10ms idle time (less some overheads). This should in theory reduce heat and power consumption.

 


Edited by edmuss
  • Like 6
  • Thanks 14

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

  • edmuss changed the title to Open Composite & OpenXR Toolkit Tuning Guide

It has been used to run on a quest 2, I don't know the ins and outs of it though. @diamond26 is using it I believe and may be able to give more insight 🙂

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

Ok let me make sure I have this straight --

The "developer tools" we get from the Microsoft store one really does one thing that's helpful: it turns on motion reprojection.

The "tool kit" we download from GitHub has two tricks.  It can do the fancy scaling routines, AND it allows the motion reprojection to float as low as 22.5 hz?

Well worth the price imo

 

Ryzen 5600X (stock), GBX570, 32Gb RAM, AMD 6900XT (reference), G2, WInwing Orion HOTAS, T-flight rudder

Link to comment
Share on other sites

3 minutes ago, DeltaMike said:

Ok let me make sure I have this straight --

The "developer tools" we get from the Microsoft store one really does one thing that's helpful: it turns on motion reprojection.

The "tool kit" we download from GitHub has two tricks.  It can do the fancy scaling routines, AND it allows the motion reprojection to float as low as 22.5 hz?

Well worth the price imo

 

The dev tools lets us fiddle with render resolution as well.

The openxr toolkit also has the image adjustments in there, foveated rendering, performance metrics and some control over the reprojection rates.  I'm not sure if the fractional reprojection brackets aren't just a built in feature of openxr (which is implemented via open composite)

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

You should note that OXRDT should be re-installed from MS store, especially if people installed an earlier build, as the auto-update doesnt seem to work properly. Several people reported a massive framerate increase after reintalling openXR developer tools.


Edited by winghunter

DCS Web Editor - New 3D Mission Editor for DCS that runs in your browser

DCS Web Viewer free browser based mission planner / viewer

dcs web editor new(2).png
4090 RTX, 13700KF, water cooled

Link to comment
Share on other sites

There is no such thing as an oculus 2, the quest 2 is the current oculus (now facebook meta) headset.

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

12 minutes ago, edmuss said:

There is no such thing as an oculus 2, the quest 2 is the current oculus (now facebook meta) headset.

Meh, the question still stands:  does  this work with Qyest 2?  My VR performance sux donkey balls.

  • Like 1

"You see, IronHand is my thing"

My specs:  W10 Pro, I5/11600K o/c to 4800 @1.32v, 64 GB 3200 XML RAM, ASUS RTX3060ti/8GB.

Link to comment
Share on other sites

1 hour ago, edmuss said:

It has been used to run on a quest 2, I don't know the ins and outs of it though. @diamond26 is using it I believe and may be able to give more insight 🙂

 

Just now, Steel Jaw said:

Meh, the question still stands:  does  this work with Qyest 2?  My VR performance sux donkey balls.

I answered the question up there ^^^ 🙂

I don't think it's any faster than the oculus runtime but I think he said that it gave a better image quality.

  • Like 1

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

So I'm having some struggles....

I was able to get v.0.4 to work fine, using Steam DCS and OvGME. When I upgraded to 0.6.2 however, following the same steps as the first time, SteamVR loads without fail. I've validated the game, removed OpenXR, reimported it into OvGME, and nothing seems to work. Can anyone offer some guidance?

Link to comment
Share on other sites

24 minutes ago, WtierJWA said:

So I'm having some struggles....

I was able to get v.0.4 to work fine, using Steam DCS and OvGME. When I upgraded to 0.6.2 however, following the same steps as the first time, SteamVR loads without fail. I've validated the game, removed OpenXR, reimported it into OvGME, and nothing seems to work. Can anyone offer some guidance?

Try uninstalling Mixed Reality Portal under Steam library. Reinstall from MS Store.

Ryzen 7 5800X3D | 64GB DDR4 3600| MSI RTX 4080 16GB Ventus 3X OC  | Samsung 970 Evo 2TB NVME | HP Reverb G2 | DIY Head Tracker Cap | Logitech X-56 throttle | VKB NXT Premium |  Win 11

"Any sufficiently advanced technology is indistinguishable from magic."

--Arthur C Clark

Link to comment
Share on other sites

16 minutes ago, Sr. said:

Try uninstalling Mixed Reality Portal under Steam library. Reinstall from MS Store.

Yeah, that had no effect. I already run the Mixed Reality Portal from the MS Store. When I removed SteamVR, DCS wouldn't load in VR at all. The problem seems to be with OpenXR and how it's communicating (or not communicating) with WMR and Steam.... But I don't know if its an issue with a file name or what. Like I wrote earlier, version 0.4 worked, and I've done nothing different other than change versions. 

Link to comment
Share on other sites

Try setting the OXR runtime in the SVR developer settings to SVR and then when WMRP tells you it's not the active OXR runtime click the button that says fix it.

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

8 hours ago, Steel Jaw said:

Meh, the question still stands:  does  this work with Qyest 2?  My VR performance sux donkey balls.

The simple answer is Yes it works with Quest2.
Follow the instructions mentioned here:  (I didn't have any distortion) 

For the performance issues follow the PC hygiene steps mentioned in the second link

 


Edited by diamond26
  • Like 1

MAIN SYSTEM SPECS: MSI PRO Z690-A WIFI DDR4, Intel Corei7-12700K @ 5.0, 64Gb RAM Kingston KF3600C18D4/16GX, EVGA RTX 3080 FTW3 ULTRA GAMING 12GB, Samsung SSD 970 EVO Plus 1TB, Virpil T50CM3 Throttle, VKB Gladiator NXT Evo, VKB T-Rudder MKIV, Quest 2, Quest Pro

BACKUP SYSTEM SPECS: Lenovo Legion Y540-15IRH, i7 9750, RTX2060mobile 6GB, 32GB RAM Crucial DDR4-2666, 1TB Intel SSD NVMe


SOFTWARE: Microsoft Windows 11

Link to comment
Share on other sites

11 hours ago, edmuss said:

Hi all, due to the main thread becoming something of a monster I thought I would start this to hopefully aid people in tuning the Open Composite openxr mod for DCS by using the OpenXR Developer tools and OpenXR Toolkit.

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 🙂

This is also based upon the open composite mod alone and not necessarily applicable with other mods involved. Also considering that the mod is correctly installed and set up. YMMV and all that jazz!

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 or openxr dev tool, both show the same information one way or another. 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

SVR = SteamVR

WMR4SVR = Windows Mixed Reality for SteamVR

OXRTK = OpenXR ToolKit

OXRDT = OpenXR Developer Tools

MR = Motion Reprojection

A clear, stable picture?

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 tthreshold 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. My 8gb card defaults to around 60-65%; image quality loss is fairly minimal compared to WMR4SVR in experience.

Within the OXRTK menu you can enable foveated rendering and upscaling to gain some frames back but at the expense of some image quality.

Your framerates will be unlocked but should be stable.

All the bells and whistles?

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/4 brackets, best to turn some settings up and push it down into the 1/4 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. Note that rotor blades cause havoc with this because it's shadows and model geometry moving at VERY high speeds.

MR is more suited to high flying with regards to artifacts as this keeps the relative motion low.

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 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 of 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.

These are my observations from testing and tweaking. Each and every one of us is different with different setups and requirements as such there is no right and wrong but I believe that the above is a pretty fair generic guide to get you started 🙂

I will probably add to this as the mod develops and matures. Hopefully this will help at least one person, if so then it was worth the hour it's taken to type on my phone 😄

For reference in the A10C with my 3070 I can run 75% resolution, medium to high DCS settings with MR disabled and have a framerate over 50fps over Beruit. Over open ground in Syria I regularly see 55-65fps. In Caucasus I can either turn resolution to 100% or get framerates up to the high 70s. This performance is single player only so obviously things will change in multi player.

edit: This thread is intended as a guide to help set up and share experience and knowledge of setting up the OXR toolkits.

If you've got setup or configuration issues then you'd be better to ask in the main thread over here as there's a much wider range of knowledge and information there on the subject.

 

Clap Reaction GIF

  • Like 2
Link to comment
Share on other sites

If you change versions and do a reinstall and things are wonky in the new install, use the reset all settings to default, restart the game and than try with new settings.  Despite a fresh upgrade it's keeping all your previous settings.

  • Like 1
Link to comment
Share on other sites

23 hours ago, edmuss said:

Hi all, due to the main thread becoming something of a monster I thought I would start this to hopefully aid people in tuning the Open Composite openxr mod for DCS by using the OpenXR Developer tools and OpenXR Toolkit.

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 🙂

This is also based upon the open composite mod alone and not necessarily applicable with other mods involved. Also considering that the mod is correctly installed and set up. YMMV and all that jazz!

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 or openxr dev tool, both show the same information one way or another. 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

SVR = SteamVR

WMR4SVR = Windows Mixed Reality for SteamVR

OXRTK = OpenXR ToolKit

OXRDT = OpenXR Developer Tools

MR = Motion Reprojection

A clear, stable picture?

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 tthreshold 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. My 8gb card defaults to around 60-65%; image quality loss is fairly minimal compared to WMR4SVR in experience.

Within the OXRTK menu you can enable foveated rendering and upscaling to gain some frames back but at the expense of some image quality.

Your framerates will be unlocked but should be stable.

All the bells and whistles?

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/4 brackets, best to turn some settings up and push it down into the 1/4 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. Note that rotor blades cause havoc with this because it's shadows and model geometry moving at VERY high speeds.

MR is more suited to high flying with regards to artifacts as this keeps the relative motion low.

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 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 of 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.

These are my observations from testing and tweaking. Each and every one of us is different with different setups and requirements as such there is no right and wrong but I believe that the above is a pretty fair generic guide to get you started 🙂

I will probably add to this as the mod develops and matures. Hopefully this will help at least one person, if so then it was worth the hour it's taken to type on my phone 😄

For reference in the A10C with my 3070 I can run 75% resolution, medium to high DCS settings with MR disabled and have a framerate over 50fps over Beruit. Over open ground in Syria I regularly see 55-65fps. In Caucasus I can either turn resolution to 100% or get framerates up to the high 70s. This performance is single player only so obviously things will change in multi player.

edit: This thread is intended as a guide to help set up and share experience and knowledge of setting up the OXR toolkits.

If you've got setup or configuration issues then you'd be better to ask in the main thread over here as there's a much wider range of knowledge and information there on the subject.

 

Fantastic! Thanks for compiling this. 

  • Like 1

I fly an A-10C II in VR and post my DCS journey on Is your phone a YouTube Signature Device? - Gizmochina     |   Subscribe to my DCS A-10C channel   

Come check out the 132nd Virtual Wing                                   |   My 4090 VR Performance Optimization  
SYSTEM SPECS: Ryzen 7 5800X3D, RTX4090, Varjo Aero, VKB Gunfigher MKIII MCG Ultimate with 10cm extension,VPC MongoosT-50CM3 Throttle, VPC Control Panel #2, TM TPR Rudders. 64GB RAM, W10, Gametrix Jetseat, PointCTRL (currently broken), OpenKneeboard, Wacom Intuos.

132nd.Ready_Signatur.png

Link to comment
Share on other sites

I have been carrying out more testing on the reprojection front and whilst it should perform as per steamvr it doesn't currently play nicely with helo rotor blade shadows.  I've grabbed a couple of quick and dirty through the lense videos that demonstrates the effects quite well in the KA50.

SVR MR

https://photos.app.goo.gl/XZe1g19vdVPWmbHn9

OXR MR

https://photos.app.goo.gl/HuMmkbk12T28oppm7

Obviously the SVR MR is giving a much better image when the shadows pass over the panel, this is something that hopefully can be worked on by the devs.  Watch this space! 🙂

  • Like 1

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

17 hours ago, edmuss said:

Try setting the OXR runtime in the SVR developer settings to SVR and then when WMRP tells you it's not the active OXR runtime click the button that says fix it.

I'm not seeing a setting in Steam VR to change the runtime. Can you be more specific. I just tried uninstalling and reinstalling WMRP and OpenXR Tools. Still nothing....

Link to comment
Share on other sites

It's in settings/developer from the steamvr burger menu 🙂
 

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

15 hours ago, edmuss said:

It's in settings/developer from the steamvr burger menu 🙂
 

So I managed to get it resolved... I installed the files manually and they worked perfectly, so the issue is with the ZIP and how it interacts with OvGME. I noticed when I downloaded 0.6.1 and .2 that when I tried to import it into OvGME, I received an error that the ZIP file was not a valid Mod Archive because the name of the folder and the name of the ZIP did not match. I adjected the name of the folder and rearchived it into a ZIP, and OvGME seemed to accept it, but OpenXR still failed to load. Just an FYI to those going that route.... 

On to optimizing!

  • Like 1
Link to comment
Share on other sites

Next question I have is this: Is there a way to slow down the keyboard command deadline for the in-VR toolkit, and change the keys to open it? It disappears too fast for me to lift the headset to open the toolkit, and it's asking for CTRL-Num2, which I don't even have. 

Link to comment
Share on other sites

I bind Ctrl arrows for the OXRTK menu, it makes more logical sense to me and I can find them blind in VR.

In one of the ingame menu options there's a timeout setting, adjust that, I think default is 10 seconds.


Edited by edmuss

Ryzen7 7800X3D / RTX3080ti / 64GB DDR5 4800 / Varjo Aero / Leap Motion / Kinect Headtracking
TM 28" Warthog Deltasim Hotas / DIY Pendular Rudders / DIY Cyclic Maglock Trimmer / DIY Abris / TM TX 599 evo wheel / TM T3PA pro / DIY 7+1+Sequential Shifter / DIY Handbrake / Cobra Clubman Seat
Shoehorned into a 43" x 43" cupboard.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...