Pozwolę sobie to wrzucić jako osobny wątek.
Kiedyś natknąłem się na taki skrypt na jakimś rosyjskojęzycznym forum VR:
@echo off
:: ================ Variables settings ======================
::-----------------------------------------------------
:: Parameter"AllDefault" settings:
:: 0 - Set ODT parameters,
:: 1 - Reset parameters WITHOUT restart Oculus Service
:: 2 - Reset Parameters WITH restart Oculus service
set AllDefault=0
::---------------------------------------------------------
:: Parameter "Performance HUD" settings:
:: 0 - None (Default)
:: 1 - Performance summary
:: 2 - Latency Timing
:: 3 - App Render Timing
:: 4 - Compositor Render Timing
:: 5 - Not Use (Reserved)
:: 6 - Async-Space Wrap Stats
:: 7 - Oculus Link
:: 8 - Oculus Link Detail
set PerfHUD=7
::-------------------------------------------------------------
:: Parameters "PixelPerDisplay", "FOV" settings:
:: 0 - default
set PixelPerDisplay=1.3
set FOVx=0.85
set FOVy=0.85
:: Parameter "Use FOV stencil" settings:
:: true - Auto (default)
:: false - Off
set FOVstencil=true
set EncodeWidth=0
set BitrateMbps=900
::-----------------
:: Parameter "Distortion Curvature" settings:
:: 0 - Low
:: 1 - High (default)
set DistCurve=1
::-------------------
:: Parameter "Link Sharpening" settings:
:: 0 - Auto (default)
:: 1 - Disable
:: 2 - Enable
set LinkSharp=0
::------------------------
:: Parameter "Encode Dynamic Bitrate" settings:
:: 0 - Disable (default)
:: 1 - Enable
set DynBitRate=0
set DynBitRateMax=0
set DynBitRateOffset=0
::------------------------
:: Parameter "MobileASW" settings:
:: 0 - Auto (default)
:: 1 - Disabled
:: 2 - Enabled
set masw=0
::------------------------
:: Parameter "ASW" settings:
:: Auto - Automatic (default)
:: Off - Disable
set asw=off
::=================================================================
if %alldefault% == 1 goto :_defaultnrs
if %alldefault% == 2 goto :_defaultrs
(
@echo service set-pixels-per-display-pixel-override %PixelPerDisplay%
@echo service set-client-fov-tan-angle-multiplier %fovx% %fovy%
@echo service set-use-fov-stencil %FOVstencil%
@echo perfhud set-mode %PerfHUD%
@echo server:asw.%asw%
@echo exit
) | "C:\Program Files\Oculus\Support\oculus-diagnostics\OculusDebugToolCLI.exe"
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v EncodeWidth /t REG_DWORD /d %EncodeWidth% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v BitrateMbps /t REG_DWORD /d %BitrateMbps% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DistortionCurve /t REG_DWORD /d %DistCurve% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v LinkSharpeningEnabled /t REG_DWORD /d %LinkSharp% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v MobileASWMode /t REG_DWORD /d %masw% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBR /t REG_DWORD /d %DynBitRate% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBRMax /t REG_DWORD /d %DynBitRateMax% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBROffsetMbps /t REG_DWORD /d %DynBitRateOffset% /f
exit
:_defaultrs
:: Set parameters to default with restart service
net stop OVRservice && net start OVRservice
@ping localhost /n 2 >nul
:_defaultnrs
:: Set parameters to default without restart service
(
@echo service set-pixels-per-display-pixel-override 0
@echo service set-client-fov-tan-angle-multiplier 0 0
@echo service set-force-mip-gen-on-all-layers true
@echo service set-offset-mip-bias-on-all-layers 0
@echo service set-use-fov-stencil true
@echo service set-pose-injection 0
@echo server:asw.Auto
::echo service enable-adaptive-gpu-perf-scale true
::echo service set-use-rec-spec-resolution
@echo exit
) | "C:\Program Files\Oculus\Support\oculus-diagnostics\OculusDebugToolCLI.exe"
reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v BitrateMbps /f
reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DistortionCurve /f
reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v LinkSharpeningEnabled /f
reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v MobileASWMode /f
reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBROffsetMbps /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v inKpiReport /t REG_DWORD /d 0 /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v EncodeWidth /t REG_DWORD /d 0 /f
::reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v EncodeWidth /t REG_DWORD /f
::reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBR /t REG_DWORD /d 0 /f
reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBR /f
reg delete "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBRMax /f
exitJest to o tyle fajna rzecz, że pozwala zrozumieć co kontrolują poszczególne ustawienia i jakie zmienne można stosować. Część ustawień jest modyfikowana za pomocą komend do Oculus Debug Tool. Cześć zapisywana jest w rejestrze Windowsa. Wartości zapisywane w rejestrze są stałe (odporne na reset), te ustawiane w ODT co do zasady resetują się do wartości domyślnych przy każdym uruchomieniu PC lub restarcie usługi.
Ten skrypt wyżej to generalnie trochę przerost formy nad treścią, ale na jego bazie przygotowałem sobie pliki bat, którymi mogę szybko zmieniać ustawienia Meta Link. Generalnie z tych samych komend korzysta zapewne OTT, tylko po prostu tam jest to ubrane w GUI i dodatkowe funkcje. Ja kierując się w życiu zasadą "make life harder" wybrałem kontrolowanie tych ustawień za pomocą prostych skryptów.
Jako że grywam zarówno po kablu jak i bezprzewodowo, zrobiłem sobie pliki bat do szybkiej zmiany tych ustawień.
Mam plik Link_fixed_900.bat o takiej treści:
@echo off
set EncodeWidth=0
set BitrateMbps=900
set DynBitRate=0
set DynBitRateMax=0
set DynBitRateOffset=0
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v EncodeWidth /t REG_DWORD /d %EncodeWidth% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v BitrateMbps /t REG_DWORD /d %BitrateMbps% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBR /t REG_DWORD /d %DynBitRate% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBRMax /t REG_DWORD /d %DynBitRateMax% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBROffsetMbps /t REG_DWORD /d %DynBitRateOffset% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v HEVC /t REG_DWORD /d 0 /f
exitAnalogicznie plik AirLink_dynamic.bat do grania po Wi-Fi (tutaj od siebie dodałem ustawienie kodeka x-265/HEVC, który w Air Link spisuje się świetnie):
@echo off
set EncodeWidth=0
set BitrateMbps=0
set DynBitRate=1
set DynBitRateMax=400
set DynBitRateOffset=50
@echo exit
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v EncodeWidth /t REG_DWORD /d %EncodeWidth% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v BitrateMbps /t REG_DWORD /d %BitrateMbps% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBR /t REG_DWORD /d %DynBitRate% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBRMax /t REG_DWORD /d %DynBitRateMax% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v DBROffsetMbps /t REG_DWORD /d %DynBitRateOffset% /f
reg add "HKCU\SOFTWARE\Oculus\RemoteHeadset" /v HEVC /t REG_DWORD /d 1 /f
exitTo pozwala mi na szybką zmianę tych ustawień. Z tym, że konieczny jest restart PC lub usługi Oculus by zadziałały.
Natomiast z pozostałych ustawień kluczowe są dla mnie PPDO, FOV i ASW. Te wystarczy odpalić w pliku bat przed uruchomieniem gry. Więc można stworzyć taki prosty plik:
@echo off
set PixelPerDisplay=1.5
set FOVx=0.85
set FOVy=0.85
set asw=off
(
echo service set-pixels-per-display-pixel-override %PixelPerDisplay%
echo service set-client-fov-tan-angle-multiplier %fovx% %fovy%
echo server:asw.%asw%
echo exit
) | "C:\Program Files\Oculus\Support\oculus-diagnostics\OculusDebugToolCLI.exe"
exitAle tutaj drobna uwaga - ustawienia PPDO i FOV resetują się do 0 przy każdym uruchomieniu komputera, natomiast ASW ustawia się na Auto przy każdym uruchomieniu Linka. Więc odpalając ten plik bat i później łącząc się poprzez Link, ASW będzie znowu jako Auto. Przez jakiś czas miałem po prostu osobny plik tylko z komendą ASW=off, który odpalałem zawsze dla pewności po połączeniu gogli przez Link. Można też korzystać ze skrótu klawiszowego CTRL+Num1. Ale teraz doszedłem do wniosku, że najlepiej wkomponować te komendy w launcher.
I tak, dla DCS mój plik z którego odpalam grę w VR wygląda tak:
@echo off
:: =========================
:: OCULUS SETTINGS
:: =========================
set PixelPerDisplay=1.5
set FOVx=0.85
set FOVy=0.85
set "asw=off"
(
echo service set-pixels-per-display-pixel-override %PixelPerDisplay%
echo service set-client-fov-tan-angle-multiplier %fovx% %fovy%
echo server:asw.%asw%
echo exit
) | "C:\Program Files\Oculus\Support\oculus-diagnostics\OculusDebugToolCLI.exe"
timeout /t 5 /nobreak
:: =========================
:: LAUNCH JOYSTICK GREMLIN
:: =========================
cd /d "C:\Program Files (x86)\H2ik\Joystick Gremlin\"
start joystick_gremlin.exe
:: =========================
:: LAUNCH DCS (VR)
:: =========================
cd /d "C:\Program Files (x86)\Steam\"
start steam.exe steam://launch/223750/VR
exitW przypadku IL-2 GB VR (dopisałem komendy podmieniające ustawienia na te z VR, bo mam też osobny launcher 2D/FLAT):
@echo off
:: =========================
:: CONFIG FILES
:: =========================
set "FILE_A=E:\SteamLibrary\steamapps\common\IL-2 Sturmovik Battle of Stalingrad\data\startup.cfg"
set "FILE_B=E:\SteamLibrary\steamapps\common\IL-2 Sturmovik Battle of Stalingrad\data\startup_VR.cfg"
:: =========================
:: VERIFY FILES
:: =========================
if not exist "%FILE_A%" (
echo ERROR: %FILE_A% not found
pause
exit /b 1
)
if not exist "%FILE_B%" (
echo ERROR: %FILE_B% not found
pause
exit /b 1
)
:: =========================
:: BACKUP + VR CONFIG
:: =========================
copy /y "%FILE_A%" "%FILE_A%.OLD" >nul
copy /y "%FILE_B%" "%FILE_A%" >nul
:: =========================
:: OCULUS SETTINGS
:: =========================
set PixelPerDisplay=1.5
set FOVx=0.85
set FOVy=0.85
set "asw=off"
(
echo server:asw.%asw%
echo exit
) | "C:\Program Files\Oculus\Support\oculus-diagnostics\OculusDebugToolCLI.exe"
timeout /t 5 /nobreak
:: =========================
:: LAUNCH JOYSTICK GREMLIN
:: =========================
cd /d "C:\Program Files (x86)\H2ik\Joystick Gremlin\"
start joystick_gremlin.exe
:: =========================
:: LAUNCH IL-2 (VR)
:: =========================
cd /d "C:\Program Files (x86)\Steam\"
start steam.exe steam://launch/307960/VR
exitWarto mieć komendę timeout aby na pewno ustawienia się zapisały przed odpaleniem gry.
Więc mój "workflow" wygląda później następująco: odpalam aplikację Meta Horizon Link, uruchamiam gogle i połączenie Link, odpalam grę plikiem bat z wirtualnego pulpitu.
Może komuś się przyda.
