Jump to content

Recommended Posts

Posted (edited)

Sometimes, you have done everything possible to make your VR session very smooth and effective, but for obscure reasons after say 15mn of enjoying DCS, you suddenly get half of your current fps rate, sometimes worst, and in the better case, you have to wait for a while, in order to see your fps rate coming back ... or not, and have to restart the session.
Hey dude, dont give up, you have to rescue some bastards alone in the Paradise Lost.
Ok, for those like me that have already read all the literature and tricks to fix their stuttering trouble, I found out a very strange behavior and fixed it.

You already have set your DCS/VR parameters the better you could, and:

1. Set Oculus parameters using Oculus Tray Tool
- ASW mode if Off (it is MANDATORY !)
- Adaptive GPU scaling is Off
- OVR Server Priority is HIGH

2. Set Oculus Link parameters using Oculus Tray Tool
- Encode Resolution: set as required by the limit of your GPU
- Distortion Curvature: Low (according to the limit of your GPU like above)
- Encode bitrate: 960 (ie max allowed by your link)
- Sharpening: Disabled

3. Clean the D3D/GL/VK/whatever shader cache:
=> see script #1: cleanDXCache.ps1

4. Optionally use the powerful "NVidia Profile Inspector" and set:
- "Enable DLSS-SR Override": 1
- "Override DLSS-SR Preset": 0x0000000B (ie Preset K)

So now what to do ?

The stuttering could appears because one or more of the 5 Oculus-Client.exe that run your session has a bad priority.
Oculus-Client's are a set of 5 programs that run with the Oculus-Server, one at a time. I don't know what are their purposes, but sometimes, one of them is terminated and a new one is started.
When I encountered stuttering, I found out that one of the oculus-client use a LOW priority.
Using the registry, I tried to tell WIN/OS to set the priority of any instance "oculus-client.exe" to HIGH, but it didn't work for new instances, just when you start a new session.
So, I wrote a brute-force script that monitor and set the priority of the oculus-client instances to HIGH, and until now, it really works.
I never encounter stuttering anymore.
==> see script #2: setOVRPriority.ps1

Tips and tricks:

1. If you want to set a priority to any instance of a program, edit a file with a .reg extension, and put:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\dcs.exe]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\dcs.exe\PerfOptions]
"CpuPriorityClass"=dword:00000003

2. If you want to launch the scripts attached to this post from the desktop, you have to create a shortcut like:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File  "C:\pathToScript\cleanDXCache.ps1"

 

Hope it helps, 

 

cleanDXCache.ps1 setOVRPriority.ps1

Edited by dcval
  • Thanks 1
Posted

I would suggest ,adding in FXO as well to the clean script; nice script by the way.  And I would note it relies upon DCS being the target directory, if you still have DCS.openbeta as your install the DCS path needs to be edited by the user

SYSTEM SPECS: Hardware AMD 9800X3D, 64Gb RAM, 4090 FE, Virpil T50CM3 Throttle, WinWIng Orion 2 & F-16EX + MFG Crosswinds V2, Varjo Aero
SOFTWARE: Microsoft Windows 11, VoiceAttack & VAICOM PRO

YOUTUBE CHANNEL: @speed-of-heat

1569924735_WildcardsBadgerFAASig.jpg.dbb8c2a337e37c2bfb12855f86d70fd5.jpg

Posted

you also need to add the low's in as well you add the environment variables but not the action 

 

SYSTEM SPECS: Hardware AMD 9800X3D, 64Gb RAM, 4090 FE, Virpil T50CM3 Throttle, WinWIng Orion 2 & F-16EX + MFG Crosswinds V2, Varjo Aero
SOFTWARE: Microsoft Windows 11, VoiceAttack & VAICOM PRO

YOUTUBE CHANNEL: @speed-of-heat

1569924735_WildcardsBadgerFAASig.jpg.dbb8c2a337e37c2bfb12855f86d70fd5.jpg

Posted
1 hour ago, VR Flight Guy in PJ Pants said:

May I suggest ditching Oculus Link and use VD instead? 😉

And I am kinda "famous" that OTT refuses to work with me on 2 separate computers, so I do not use it at all. 😞

I don't like VD, it modifies things w/o your agreement/knowledge, and it requires some money too ... Youre right about OTT, I use it with no profile, and yes, it doesn't work as expected. Stop/start service before a new session do the job for me. But whatever tool you use, parameters are the same. 

1 hour ago, speed-of-heat said:

you also need to add the low's in as well you add the environment variables but not the action 

 

Didn't not get it. Could you explain ? Notice I don't know WIN/OS at all, come from nix world ... Feel free to modify script as you like and publish it here for players. Tkx

Posted
3 minutes ago, dcval said:

I don't like VD, it modifies things w/o your agreement/knowledge, and it requires some money too ... Youre right about OTT, I use it with no profile, and yes, it doesn't work as expected. Stop/start service before a new session do the job for me. But whatever tool you use, parameters are the same. 

Shame but understandable. I don't like ASW either but somehow, the DLSS 4 gives me so of the same vib, but way, way, better off. Thank you for starting this this discussion.

I Fly, Therefore I Am.

One cannot go around not saying "Thank you" every time these days, can't you?

YouTube: https://www.youtube.com/channel/UCc9BDi-STaqgWsjNiHbW0fA

Posted (edited)
38 minutes ago, dcval said:

Didn't not get it. Could you explain ? Notice I don't know WIN/OS at all, come from nix world ... Feel free to modify script as you like and publish it here for players. Tkx

yeah you missed out some directories to clear:

# ==============================================
# NAME
# 	Cache Cleaner
# 
# AUTHOR 
#	VS / vslash.com
# ----------------------------------------------
# CHANGELOG
# 	2025/01: Init
# 	2025/02: command prompt to close win
# ==============================================


#gci env:* | sort-object name
#Set-ExecutionPolicy Unrestricted
#Get-ChildItem -Path $DP_CACHE -Include *.* -Recurse | foreach { echo "$_" }



$DP_CACHE = "$env:LOCALAPPDATA\CrashDumps"
$D3_CACHE = "$env:LOCALAPPDATA\D3DSCache"
$NV_DXCACHE = "$env:LOCALAPPDATA\NVIDIA\DXCache"
$NV_GLCACHE = "$env:LOCALAPPDATA\NVIDIA\GLCache"
$NV_LOW_DXCACHE = "$env:HOMEPATH\AppData\LocalLow\NVIDIA\DXCache"
$NV_LOW_PDCACHE = "$env:HOMEPATH\AppData\LocalLow\NVIDIA\PerDriverVersion\DXCache"
$DCS_FXO = "$env:HOMEPATH\Saved Games\DCS.openbeta\fxo"
$DCS_METASHADER = "$env:HOMEPATH\Saved Games\DCS.openbeta\metashaders2"

echo "*** D3D/GL Shaders Cache Cleaner ***"
echo "------------------------------------"
echo "==> Starting"
echo ""
echo "  > INFO : errors like items being used by another process will be silently ignored"
echo ""

$d = $DP_CACHE
if (Test-Path -Path $d) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force -ErrorAction SilentlyContinue
}

$d = $D3_CACHE
if (Test-Path -Path $d ) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force -ErrorAction SilentlyContinue
}

$d = $NV_DXCACHE
if (Test-Path -Path $d) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force -ErrorAction SilentlyContinue
}

$d = $NV_LOW_DXCACHE
if (Test-Path -Path $d) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force -ErrorAction SilentlyContinue
}

$d = $NV_LOW_PDCACHE
if (Test-Path -Path $d) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force -ErrorAction SilentlyContinue
}

$d = $NV_GLCACHE
if (Test-Path -Path $d) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force -ErrorAction SilentlyContinue
}

$d = $DCS_FXO
if (Test-Path -Path $d) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force
}

$d = $DCS_METASHADER
if (Test-Path -Path $d) {
	$count = (gci $d | measure -Line).Lines
	echo "  > Cleaning $d for $count items:"
	Remove-Item $d\* -Recurse -Force
}

echo ""
echo "==> Done"
echo "------------------------------------"

Read-Host -Prompt "Press Enter to exit"

specifically Low PDCache and Low DX Cache and FXO the above script works for DCS openbeta as the install path (just remove .openbeta) 

Edited by speed-of-heat
  • Thanks 1

SYSTEM SPECS: Hardware AMD 9800X3D, 64Gb RAM, 4090 FE, Virpil T50CM3 Throttle, WinWIng Orion 2 & F-16EX + MFG Crosswinds V2, Varjo Aero
SOFTWARE: Microsoft Windows 11, VoiceAttack & VAICOM PRO

YOUTUBE CHANNEL: @speed-of-heat

1569924735_WildcardsBadgerFAASig.jpg.dbb8c2a337e37c2bfb12855f86d70fd5.jpg

  • Recently Browsing   0 members

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