From ae1cf134cce36dcb3d9973fa07eddf2b7eb60576 Mon Sep 17 00:00:00 2001 From: pa Date: Sat, 13 Dec 2025 23:44:24 +0900 Subject: [PATCH] fix: overlay scaling issue --- Dotnet/Overlay/Cef/OffScreenBrowser.cs | 4 ++-- Dotnet/Overlay/Cef/OffScreenBrowserLegacy.cs | 25 +++++++++++++------- Dotnet/Overlay/Cef/VRCXVRCef.cs | 15 ++++++++++-- Dotnet/Overlay/Cef/VRCXVRLegacy.cs | 15 ++++++++++-- src-electron/main.js | 2 ++ 5 files changed, 47 insertions(+), 14 deletions(-) diff --git a/Dotnet/Overlay/Cef/OffScreenBrowser.cs b/Dotnet/Overlay/Cef/OffScreenBrowser.cs index 2e45af18..30320f48 100644 --- a/Dotnet/Overlay/Cef/OffScreenBrowser.cs +++ b/Dotnet/Overlay/Cef/OffScreenBrowser.cs @@ -26,7 +26,7 @@ namespace VRCX private static readonly Logger logger = LogManager.GetCurrentClassLogger(); - public OffScreenBrowser(string address, int width, int height) + public OffScreenBrowser(string address, int width, int height, IRequestContext requestContext = null) : base(address, automaticallyCreateBrowser: false) { var windowInfo = new WindowInfo(); @@ -42,7 +42,7 @@ namespace VRCX WindowlessFrameRate = 60 }; - CreateBrowser(windowInfo, browserSettings); + CreateBrowser(windowInfo, browserSettings, requestContext); Size = new System.Drawing.Size(width, height); RenderHandler = this; diff --git a/Dotnet/Overlay/Cef/OffScreenBrowserLegacy.cs b/Dotnet/Overlay/Cef/OffScreenBrowserLegacy.cs index fcada112..d6b177c3 100644 --- a/Dotnet/Overlay/Cef/OffScreenBrowserLegacy.cs +++ b/Dotnet/Overlay/Cef/OffScreenBrowserLegacy.cs @@ -24,17 +24,26 @@ namespace VRCX private int _width; private int _height; - public OffScreenBrowserLegacy(string address, int width, int height) - : base( - address, - new BrowserSettings() - { - DefaultEncoding = "UTF-8" - } - ) + public OffScreenBrowserLegacy(string address, int width, int height, IRequestContext requestContext = null) + : base(address, automaticallyCreateBrowser: false) { _paintBufferLock = new ReaderWriterLockSlim(); + var windowInfo = new WindowInfo(); + windowInfo.SetAsWindowless(IntPtr.Zero); + windowInfo.WindowlessRenderingEnabled = true; + windowInfo.SharedTextureEnabled = false; + windowInfo.Width = width; + windowInfo.Height = height; + + var browserSettings = new BrowserSettings() + { + DefaultEncoding = "UTF-8", + WindowlessFrameRate = 24 + }; + + CreateBrowser(windowInfo, browserSettings, requestContext); + Size = new System.Drawing.Size(width, height); RenderHandler = this; diff --git a/Dotnet/Overlay/Cef/VRCXVRCef.cs b/Dotnet/Overlay/Cef/VRCXVRCef.cs index d6573f5e..a6692cef 100644 --- a/Dotnet/Overlay/Cef/VRCXVRCef.cs +++ b/Dotnet/Overlay/Cef/VRCXVRCef.cs @@ -33,6 +33,15 @@ namespace VRCX private static readonly float[] _rotationRight = { -90f * (float)(Math.PI / 180f), -90f * (float)(Math.PI / 180f), -90f * (float)(Math.PI / 180f) }; private static OffScreenBrowser _wristOverlay; private static OffScreenBrowser _hmdOverlay; + + private static readonly IRequestContext VrOverlayRequestContext = new RequestContext( + new RequestContextSettings + { + CachePath = string.Empty, + PersistSessionCookies = false, + PersistUserPreferences = false + } + ); private readonly List _deviceList; private readonly ReaderWriterLockSlim _deviceListLock; private bool _active; @@ -196,13 +205,15 @@ namespace VRCX _wristOverlay = new OffScreenBrowser( Program.LaunchDebug ? "http://localhost:9000/vr.html?wrist" : "file://vrcx/vr.html?wrist", 512, - 512 + 512, + VrOverlayRequestContext ); _hmdOverlay = new OffScreenBrowser( Program.LaunchDebug ? "http://localhost:9000/vr.html?hmd" : "file://vrcx/vr.html?hmd", 1024, - 1024 + 1024, + VrOverlayRequestContext ); while (_thread != null) diff --git a/Dotnet/Overlay/Cef/VRCXVRLegacy.cs b/Dotnet/Overlay/Cef/VRCXVRLegacy.cs index 2d8d5222..0b5c90a5 100644 --- a/Dotnet/Overlay/Cef/VRCXVRLegacy.cs +++ b/Dotnet/Overlay/Cef/VRCXVRLegacy.cs @@ -33,6 +33,15 @@ namespace VRCX private static readonly float[] _rotationRight = { -90f * (float)(Math.PI / 180f), -90f * (float)(Math.PI / 180f), -90f * (float)(Math.PI / 180f) }; private static OffScreenBrowserLegacy _wristOverlay; private static OffScreenBrowserLegacy _hmdOverlay; + + private static readonly IRequestContext VrOverlayRequestContext = new RequestContext( + new RequestContextSettings + { + CachePath = string.Empty, + PersistSessionCookies = false, + PersistUserPreferences = false + } + ); private readonly List _deviceList; private readonly ReaderWriterLockSlim _deviceListLock; private bool _active; @@ -194,13 +203,15 @@ namespace VRCX _wristOverlay = new OffScreenBrowserLegacy( Program.LaunchDebug ? "http://localhost:9000/vr.html?wrist" : "file://vrcx/vr.html?wrist", 512, - 512 + 512, + VrOverlayRequestContext ); _hmdOverlay = new OffScreenBrowserLegacy( Program.LaunchDebug ? "http://localhost:9000/vr.html?hmd" : "file://vrcx/vr.html?hmd", 1024, - 1024 + 1024, + VrOverlayRequestContext ); while (_thread != null) diff --git a/src-electron/main.js b/src-electron/main.js index b36b1e4b..6428cb8a 100644 --- a/src-electron/main.js +++ b/src-electron/main.js @@ -435,6 +435,7 @@ function createWristOverlayWindowOffscreen() { frame: false, show: false, webPreferences: { + partition: 'vrcx-vr-overlay', offscreen: true, preload: path.join(__dirname, 'preload.js') } @@ -501,6 +502,7 @@ function createHmdOverlayWindowOffscreen() { frame: false, show: false, webPreferences: { + partition: 'vrcx-vr-overlay', offscreen: true, preload: path.join(__dirname, 'preload.js') }