Skip to content

Commit fc8726f

Browse files
committed
Added options to set Framebuffer Scale Factor in WebXRSettings
1 parent d41b68d commit fc8726f

File tree

4 files changed

+35
-4
lines changed

4 files changed

+35
-4
lines changed

MainProject/Assets/XR/Settings/Web XR Settings.asset

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@ MonoBehaviour:
1616
VROptionalFeatures: 2
1717
ARRequiredReferenceSpace: 2
1818
AROptionalFeatures: -1
19+
UseFramebufferScaleFactor: 0
20+
UseNativeResolution: 0
21+
FramebufferScaleFactor: 1

Packages/webxr/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88

99
### Added
1010
- Option to update active camera tag in WebXRCamera.
11+
- Options to set Framebuffer Scale Factor in WebXRSettings.
1112

1213
## [0.17.0] - 2023-07-10
1314
### Changed

Packages/webxr/Runtime/Plugins/WebGL/webxr.jspre

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -848,14 +848,26 @@ setTimeout(function () {
848848
}
849849

850850
XRManager.prototype.onSessionStarted = function (session) {
851-
var glLayer = new XRWebGLLayer(session, this.ctx);
851+
var webXRSettings = this.gameModule.WebXR.Settings;
852+
var glLayer;
853+
if (webXRSettings.UseFramebufferScaleFactor) {
854+
var scaleFactor = webXRSettings.FramebufferScaleFactor;
855+
if (webXRSettings.UseNativeResolution && XRWebGLLayer.getNativeFramebufferScaleFactor) {
856+
scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);
857+
}
858+
glLayer = new XRWebGLLayer(session, this.ctx, {
859+
framebufferScaleFactor: scaleFactor
860+
});
861+
} else {
862+
glLayer = new XRWebGLLayer(session, this.ctx);
863+
}
852864
session.updateRenderState({ baseLayer: glLayer });
853865

854866
var refSpaceType = 'viewer';
855867
if (session.isImmersive) {
856-
refSpaceType = this.gameModule.WebXR.Settings.VRRequiredReferenceSpace[0];
868+
refSpaceType = webXRSettings.VRRequiredReferenceSpace[0];
857869
if (session.isAR) {
858-
refSpaceType = this.gameModule.WebXR.Settings.ARRequiredReferenceSpace[0];
870+
refSpaceType = webXRSettings.ARRequiredReferenceSpace[0];
859871
this.ctx.dontClearAlphaOnly = true;
860872
}
861873

Packages/webxr/Runtime/XRPlugin/WebXRSettings.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,18 @@ public enum ExtraFeatureTypes
3232
public ReferenceSpaceTypes ARRequiredReferenceSpace = ReferenceSpaceTypes.local_floor;
3333
public ExtraFeatureTypes AROptionalFeatures = (ExtraFeatureTypes)(-1);
3434

35+
[Header("More Settings")]
36+
[Tooltip(@"Should manually set FramebufferScaleFactor?
37+
The scale factor in which the scene is rendered in.
38+
Default is the recommended resolution. Can be different than native resolution.")]
39+
public bool UseFramebufferScaleFactor = false;
40+
[Tooltip(@"If ""Use Framebuffer Scale Factor"" is true, should use native resolution?")]
41+
public bool UseNativeResolution = false;
42+
[Tooltip(@"If ""Use Framebuffer Scale Factor"" is true, and not using native resolution, what should be the scale factor?
43+
Default is 1.0, the recommended resolution.")]
44+
[Range(0.2f,2.0f)]
45+
public float FramebufferScaleFactor = 1.0f;
46+
3547
string EnumToString<T>(T value) where T : Enum
3648
{
3749
return value.ToString().Replace('_','-');
@@ -65,7 +77,10 @@ public string ToJson()
6577
""VRRequiredReferenceSpace"": [""{EnumToString(VRRequiredReferenceSpace)}""],
6678
""VROptionalFeatures"": {FlagsToString(VROptionalFeatures)},
6779
""ARRequiredReferenceSpace"": [""{EnumToString(ARRequiredReferenceSpace)}""],
68-
""AROptionalFeatures"": {FlagsToString(AROptionalFeatures)}
80+
""AROptionalFeatures"": {FlagsToString(AROptionalFeatures)},
81+
""UseFramebufferScaleFactor"": {(UseFramebufferScaleFactor ? "true" : "false")},
82+
""UseNativeResolution"": {(UseNativeResolution ? "true" : "false")},
83+
""FramebufferScaleFactor"": {FramebufferScaleFactor}
6984
}}";
7085
return result;
7186
}

0 commit comments

Comments
 (0)