iwer 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/build/iwer.js +2121 -1399
  2. package/build/iwer.min.js +52 -11
  3. package/build/iwer.module.js +2114 -1400
  4. package/build/iwer.module.min.js +52 -11
  5. package/lib/action/ActionPlayer.d.ts.map +1 -1
  6. package/lib/action/ActionPlayer.js.map +1 -1
  7. package/lib/action/ActionRecorder.d.ts.map +1 -1
  8. package/lib/action/ActionRecorder.js +1 -1
  9. package/lib/action/ActionRecorder.js.map +1 -1
  10. package/lib/anchors/XRAnchor.d.ts.map +1 -1
  11. package/lib/anchors/XRAnchor.js.map +1 -1
  12. package/lib/device/XRController.d.ts +20 -0
  13. package/lib/device/XRController.d.ts.map +1 -1
  14. package/lib/device/XRController.js +56 -0
  15. package/lib/device/XRController.js.map +1 -1
  16. package/lib/device/XRDevice.d.ts +43 -1
  17. package/lib/device/XRDevice.d.ts.map +1 -1
  18. package/lib/device/XRDevice.js +96 -3
  19. package/lib/device/XRDevice.js.map +1 -1
  20. package/lib/device/XRHandInput.d.ts.map +1 -1
  21. package/lib/device/XRHandInput.js.map +1 -1
  22. package/lib/device/XRTrackedInput.d.ts.map +1 -1
  23. package/lib/device/XRTrackedInput.js.map +1 -1
  24. package/lib/device/configs/controller/meta.js.map +1 -1
  25. package/lib/device/configs/hand/pinch.js.map +1 -1
  26. package/lib/device/configs/hand/point.js.map +1 -1
  27. package/lib/device/configs/hand/relaxed.js.map +1 -1
  28. package/lib/device/configs/headset/meta.js.map +1 -1
  29. package/lib/events/XRInputSourceEvent.d.ts.map +1 -1
  30. package/lib/events/XRInputSourceEvent.js.map +1 -1
  31. package/lib/events/XRInputSourcesChangeEvent.d.ts.map +1 -1
  32. package/lib/events/XRInputSourcesChangeEvent.js.map +1 -1
  33. package/lib/events/XRReferenceSpaceEvent.d.ts.map +1 -1
  34. package/lib/events/XRReferenceSpaceEvent.js.map +1 -1
  35. package/lib/events/XRSessionEvent.d.ts.map +1 -1
  36. package/lib/events/XRSessionEvent.js.map +1 -1
  37. package/lib/frameloop/XRFrame.d.ts.map +1 -1
  38. package/lib/frameloop/XRFrame.js.map +1 -1
  39. package/lib/gamepad/Gamepad.d.ts.map +1 -1
  40. package/lib/gamepad/Gamepad.js.map +1 -1
  41. package/lib/hittest/XRHitTest.d.ts.map +1 -1
  42. package/lib/hittest/XRHitTest.js.map +1 -1
  43. package/lib/hittest/XRRay.d.ts.map +1 -1
  44. package/lib/hittest/XRRay.js.map +1 -1
  45. package/lib/index.d.ts +4 -0
  46. package/lib/index.d.ts.map +1 -1
  47. package/lib/index.js +4 -0
  48. package/lib/index.js.map +1 -1
  49. package/lib/initialization/XRSystem.d.ts.map +1 -1
  50. package/lib/initialization/XRSystem.js.map +1 -1
  51. package/lib/input/XRHand.d.ts.map +1 -1
  52. package/lib/input/XRHand.js.map +1 -1
  53. package/lib/input/XRInputSource.d.ts.map +1 -1
  54. package/lib/input/XRInputSource.js.map +1 -1
  55. package/lib/labels/labels.d.ts.map +1 -1
  56. package/lib/labels/labels.js.map +1 -1
  57. package/lib/layers/XRWebGLLayer.d.ts.map +1 -1
  58. package/lib/layers/XRWebGLLayer.js.map +1 -1
  59. package/lib/meshes/XRMesh.d.ts.map +1 -1
  60. package/lib/meshes/XRMesh.js.map +1 -1
  61. package/lib/planes/XRPlane.d.ts.map +1 -1
  62. package/lib/planes/XRPlane.js.map +1 -1
  63. package/lib/pose/XRJointPose.d.ts.map +1 -1
  64. package/lib/pose/XRJointPose.js.map +1 -1
  65. package/lib/pose/XRPose.d.ts.map +1 -1
  66. package/lib/pose/XRPose.js.map +1 -1
  67. package/lib/pose/XRViewerPose.d.ts.map +1 -1
  68. package/lib/pose/XRViewerPose.js.map +1 -1
  69. package/lib/primitives/XRRigidTransform.d.ts.map +1 -1
  70. package/lib/primitives/XRRigidTransform.js.map +1 -1
  71. package/lib/remote/RemoteControlInterface.d.ts +172 -0
  72. package/lib/remote/RemoteControlInterface.d.ts.map +1 -0
  73. package/lib/remote/RemoteControlInterface.js +1194 -0
  74. package/lib/remote/RemoteControlInterface.js.map +1 -0
  75. package/lib/remote/index.d.ts +9 -0
  76. package/lib/remote/index.d.ts.map +1 -0
  77. package/lib/remote/index.js +8 -0
  78. package/lib/remote/index.js.map +1 -0
  79. package/lib/remote/types.d.ts +348 -0
  80. package/lib/remote/types.d.ts.map +1 -0
  81. package/lib/remote/types.js +8 -0
  82. package/lib/remote/types.js.map +1 -0
  83. package/lib/session/XRRenderState.d.ts.map +1 -1
  84. package/lib/session/XRRenderState.js.map +1 -1
  85. package/lib/session/XRSession.d.ts.map +1 -1
  86. package/lib/session/XRSession.js.map +1 -1
  87. package/lib/spaces/XRJointSpace.d.ts.map +1 -1
  88. package/lib/spaces/XRJointSpace.js.map +1 -1
  89. package/lib/spaces/XRReferenceSpace.d.ts.map +1 -1
  90. package/lib/spaces/XRReferenceSpace.js.map +1 -1
  91. package/lib/spaces/XRSpace.d.ts.map +1 -1
  92. package/lib/spaces/XRSpace.js.map +1 -1
  93. package/lib/types/state.d.ts +46 -0
  94. package/lib/types/state.d.ts.map +1 -0
  95. package/lib/types/state.js +8 -0
  96. package/lib/types/state.js.map +1 -0
  97. package/lib/utils/Math.d.ts.map +1 -1
  98. package/lib/utils/Math.js.map +1 -1
  99. package/lib/utils/control-math.d.ts +64 -0
  100. package/lib/utils/control-math.d.ts.map +1 -0
  101. package/lib/utils/control-math.js +238 -0
  102. package/lib/utils/control-math.js.map +1 -0
  103. package/lib/version.d.ts +1 -1
  104. package/lib/version.js +1 -1
  105. package/lib/views/XRView.d.ts.map +1 -1
  106. package/lib/views/XRView.js.map +1 -1
  107. package/lib/views/XRViewport.d.ts.map +1 -1
  108. package/lib/views/XRViewport.js.map +1 -1
  109. package/package.json +66 -61
  110. package/lib/layers/XRWebGLBinding.d.ts +0 -92
  111. package/lib/layers/XRWebGLBinding.d.ts.map +0 -1
  112. package/lib/layers/XRWebGLBinding.js +0 -186
  113. package/lib/layers/XRWebGLBinding.js.map +0 -1
package/package.json CHANGED
@@ -1,63 +1,68 @@
1
1
  {
2
- "name": "iwer",
3
- "version": "2.1.0",
4
- "description": "Javascript WebXR Runtime for Emulation",
5
- "type": "module",
6
- "main": "lib/index.js",
7
- "types": "lib/index.d.ts",
8
- "files": [
9
- "build",
10
- "lib"
11
- ],
12
- "scripts": {
13
- "prebuild": "node -p \"'export const VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts",
14
- "build": "tsc && rollup -c",
15
- "doc": "typedoc",
16
- "format": "prettier --write ./src/**/*",
17
- "test": "jest --coverage",
18
- "prepublishOnly": "npm run build",
19
- "docs:dev": "vitepress dev docs",
20
- "docs:build": "vitepress build docs",
21
- "docs:preview": "vitepress preview docs"
22
- },
23
- "repository": {
24
- "type": "git",
25
- "url": "git+https://github.com/meta-quest/immersive-web-emulation-runtime.git"
26
- },
27
- "keywords": [],
28
- "author": "Felix Zhang <fe1ix@meta.com>",
29
- "license": "MIT",
30
- "bugs": {
31
- "url": "https://github.com/meta-quest/immersive-web-emulation-runtime/issues"
32
- },
33
- "homepage": "https://github.com/meta-quest/immersive-web-emulation-runtime#readme",
34
- "devDependencies": {
35
- "@rollup/plugin-commonjs": "^25.0.7",
36
- "@rollup/plugin-node-resolve": "^15.2.3",
37
- "@rollup/plugin-terser": "^0.4.4",
38
- "@types/gl-matrix": "^3.2.0",
39
- "@types/jest": "^29.5.11",
40
- "@types/node": "^18.7.13",
41
- "@types/three": "^0.149.0",
42
- "@types/uuid": "^9.0.8",
43
- "@types/webxr": "^0.5.8",
44
- "@typescript-eslint/eslint-plugin": "^5.55.0",
45
- "@typescript-eslint/parser": "^5.55.0",
46
- "eslint": "^8.36.0",
47
- "eslint-config-prettier": "^10.1.8",
48
- "eslint-plugin-prettier": "^5.0.1",
49
- "jest": "^29.7.0",
50
- "jest-environment-jsdom": "^29.7.0",
51
- "prettier": "^3.0.3",
52
- "renamer": "^4.0.0",
53
- "rimraf": "^5.0.5",
54
- "rollup": "^2.79.1",
55
- "ts-jest": "^29.1.1",
56
- "typescript": "^4.9.5",
57
- "vitepress": "1.0.1"
58
- },
59
- "dependencies": {
60
- "gl-matrix": "^3.4.3",
61
- "webxr-layers-polyfill": "^1.1.0"
62
- }
2
+ "name": "iwer",
3
+ "version": "2.2.0",
4
+ "description": "Javascript WebXR Runtime for Emulation",
5
+ "type": "module",
6
+ "main": "lib/index.js",
7
+ "types": "lib/index.d.ts",
8
+ "files": [
9
+ "build",
10
+ "lib"
11
+ ],
12
+ "scripts": {
13
+ "prebuild": "node -p \"'export const VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts",
14
+ "build": "tsc && rollup -c",
15
+ "doc": "typedoc",
16
+ "format": "prettier --write ./src/**/*",
17
+ "test": "jest",
18
+ "prepublishOnly": "npm run build",
19
+ "docs:dev": "vitepress dev docs",
20
+ "docs:build": "vitepress build docs",
21
+ "docs:preview": "vitepress preview docs"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/meta-quest/immersive-web-emulation-runtime.git"
26
+ },
27
+ "keywords": [],
28
+ "author": "Felix Zhang <fe1ix@meta.com>",
29
+ "license": "MIT",
30
+ "bugs": {
31
+ "url": "https://github.com/meta-quest/immersive-web-emulation-runtime/issues"
32
+ },
33
+ "homepage": "https://github.com/meta-quest/immersive-web-emulation-runtime#readme",
34
+ "devDependencies": {
35
+ "@rollup/plugin-commonjs": "^25.0.7",
36
+ "@rollup/plugin-node-resolve": "^15.2.3",
37
+ "@rollup/plugin-terser": "^0.4.4",
38
+ "@types/gl-matrix": "^3.2.0",
39
+ "@types/jest": "^29.5.11",
40
+ "@types/node": "^18.7.13",
41
+ "@types/three": "^0.149.0",
42
+ "@types/uuid": "^9.0.8",
43
+ "@types/webxr": "^0.5.8",
44
+ "@typescript-eslint/eslint-plugin": "^8.56.0",
45
+ "@typescript-eslint/parser": "^8.56.0",
46
+ "eslint": "^9.39.3",
47
+ "eslint-config-prettier": "^10.1.8",
48
+ "eslint-plugin-import": "^2.32.0",
49
+ "eslint-plugin-prettier": "^5.0.1",
50
+ "jest": "^29.7.0",
51
+ "jest-environment-jsdom": "^29.7.0",
52
+ "prettier": "^3.0.3",
53
+ "renamer": "^4.0.0",
54
+ "rimraf": "^5.0.5",
55
+ "rollup": "^2.79.1",
56
+ "ts-jest": "^29.1.1",
57
+ "typescript": "^4.9.5",
58
+ "vitepress": "^2.0.0-alpha.16"
59
+ },
60
+ "overrides": {
61
+ "ajv": "^8.18.0",
62
+ "minimatch": "^10.0.0"
63
+ },
64
+ "dependencies": {
65
+ "gl-matrix": "^3.4.3",
66
+ "webxr-layers-polyfill": "^1.1.0"
67
+ }
63
68
  }
@@ -1,92 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import { XRSession } from '../session/XRSession.js';
8
- type XRWebGLBindingInit = {
9
- antialias?: boolean;
10
- depth?: boolean;
11
- stencil?: boolean;
12
- alpha?: boolean;
13
- ignoreDepthValues?: boolean;
14
- framebufferScaleFactor?: number;
15
- };
16
- type XRProjectionLayerInit = {
17
- colorFormat?: number;
18
- depthFormat?: number;
19
- scaleFactor?: number;
20
- textureType?: string;
21
- layout?: string;
22
- };
23
- /**
24
- * XRProjectionLayer implementation that mimics the behavior of XRWebGLLayer
25
- * but with the projection layer API surface.
26
- */
27
- declare class XRProjectionLayer {
28
- private context;
29
- private _fixedFoveation;
30
- constructor(_session: XRSession, context: WebGLRenderingContext | WebGL2RenderingContext, _init?: XRProjectionLayerInit);
31
- /**
32
- * Texture width - maps to XRWebGLLayer.framebufferWidth
33
- */
34
- get textureWidth(): number;
35
- /**
36
- * Texture height - maps to XRWebGLLayer.framebufferHeight
37
- */
38
- get textureHeight(): number;
39
- /**
40
- * Ignore depth values - matches XRWebGLLayer behavior
41
- */
42
- get ignoreDepthValues(): boolean;
43
- /**
44
- * Fixed foveation setting
45
- */
46
- get fixedFoveation(): number;
47
- set fixedFoveation(value: number);
48
- /**
49
- * Layout type for the projection layer
50
- */
51
- get layout(): string;
52
- /**
53
- * Blend texture source alpha
54
- */
55
- get blendTextureSourceAlpha(): boolean;
56
- /**
57
- * Chromatic aberration correction
58
- */
59
- get chromaticAberrationCorrection(): boolean;
60
- }
61
- /**
62
- * XRWebGLBinding provides methods to create WebGL resources
63
- * that are compatible with WebXR rendering.
64
- *
65
- * This implementation provides a polyfill that ensures three.js r179+
66
- * gets the same behavior as the XRWebGLLayer fallback path.
67
- */
68
- export declare class XRWebGLBinding {
69
- private session;
70
- private context;
71
- constructor(session: XRSession, context: WebGLRenderingContext | WebGL2RenderingContext, _layerInit?: XRWebGLBindingInit);
72
- /**
73
- * Creates a projection layer that behaves exactly like XRWebGLLayer
74
- * but with the projection layer API surface that three.js r179+ expects.
75
- */
76
- createProjectionLayer(init?: XRProjectionLayerInit): XRProjectionLayer;
77
- /**
78
- * Gets the viewport for a given view and layer.
79
- * This is used by three.js for sub-image rendering.
80
- */
81
- getViewSubImage(_layer: any, _view: any): any;
82
- /**
83
- * Gets a depth sub-image for the given layer and view.
84
- */
85
- getDepthSubImage(_layer: any, _view: any): any;
86
- /**
87
- * Gets the native framebuffer scale factor.
88
- */
89
- static getNativeFramebufferScaleFactor(session: XRSession): number;
90
- }
91
- export {};
92
- //# sourceMappingURL=XRWebGLBinding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XRWebGLBinding.d.ts","sourceRoot":"","sources":["../../src/layers/XRWebGLBinding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,KAAK,kBAAkB,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,cAAM,iBAAiB;IACtB,OAAO,CAAC,OAAO,CAAiD;IAChE,OAAO,CAAC,eAAe,CAAa;gBAGnC,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,qBAAqB,GAAG,sBAAsB,EACvD,KAAK,GAAE,qBAA0B;IAYlC;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAIzB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAI1B;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,OAAO,CAG/B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAG/B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,OAAO,CAGrC;IAED;;OAEG;IACH,IAAI,6BAA6B,IAAI,OAAO,CAG3C;CACD;AAED;;;;;;GAMG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAiD;gBAG/D,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,qBAAqB,GAAG,sBAAsB,EACvD,UAAU,GAAE,kBAAuB;IAqCpC;;;OAGG;IACH,qBAAqB,CAAC,IAAI,GAAE,qBAA0B,GAAG,iBAAiB;IAe1E;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAsB7C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAW9C;;OAEG;IACH,MAAM,CAAC,+BAA+B,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM;CAiBlE"}
@@ -1,186 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import { P_SESSION } from '../private.js';
8
- import { XRSession } from '../session/XRSession.js';
9
- /**
10
- * XRProjectionLayer implementation that mimics the behavior of XRWebGLLayer
11
- * but with the projection layer API surface.
12
- */
13
- class XRProjectionLayer {
14
- constructor(_session, context, _init = {}) {
15
- this._fixedFoveation = 0;
16
- console.log('[IWER] XRProjectionLayer constructor:', {
17
- context: context.constructor.name,
18
- canvas: context.canvas,
19
- drawingBufferWidth: context.drawingBufferWidth,
20
- drawingBufferHeight: context.drawingBufferHeight,
21
- init: _init
22
- });
23
- this.context = context;
24
- }
25
- /**
26
- * Texture width - maps to XRWebGLLayer.framebufferWidth
27
- */
28
- get textureWidth() {
29
- const width = this.context.drawingBufferWidth;
30
- console.log('[IWER] XRProjectionLayer.textureWidth:', width);
31
- return width;
32
- }
33
- /**
34
- * Texture height - maps to XRWebGLLayer.framebufferHeight
35
- */
36
- get textureHeight() {
37
- const height = this.context.drawingBufferHeight;
38
- console.log('[IWER] XRProjectionLayer.textureHeight:', height);
39
- return height;
40
- }
41
- /**
42
- * Ignore depth values - matches XRWebGLLayer behavior
43
- */
44
- get ignoreDepthValues() {
45
- console.log('[IWER] XRProjectionLayer.ignoreDepthValues: true');
46
- return true;
47
- }
48
- /**
49
- * Fixed foveation setting
50
- */
51
- get fixedFoveation() {
52
- console.log('[IWER] XRProjectionLayer.fixedFoveation get:', this._fixedFoveation);
53
- return this._fixedFoveation;
54
- }
55
- set fixedFoveation(value) {
56
- console.log('[IWER] XRProjectionLayer.fixedFoveation set:', value);
57
- this._fixedFoveation = value;
58
- }
59
- /**
60
- * Layout type for the projection layer
61
- */
62
- get layout() {
63
- console.log('[IWER] XRProjectionLayer.layout: mono');
64
- return 'mono';
65
- }
66
- /**
67
- * Blend texture source alpha
68
- */
69
- get blendTextureSourceAlpha() {
70
- console.log('[IWER] XRProjectionLayer.blendTextureSourceAlpha: false');
71
- return false;
72
- }
73
- /**
74
- * Chromatic aberration correction
75
- */
76
- get chromaticAberrationCorrection() {
77
- console.log('[IWER] XRProjectionLayer.chromaticAberrationCorrection: true');
78
- return true;
79
- }
80
- }
81
- /**
82
- * XRWebGLBinding provides methods to create WebGL resources
83
- * that are compatible with WebXR rendering.
84
- *
85
- * This implementation provides a polyfill that ensures three.js r179+
86
- * gets the same behavior as the XRWebGLLayer fallback path.
87
- */
88
- export class XRWebGLBinding {
89
- constructor(session, context, _layerInit = {}) {
90
- console.log('[IWER] XRWebGLBinding constructor called:', {
91
- session: session.constructor.name,
92
- context: context.constructor.name,
93
- canvas: context.canvas,
94
- drawingBufferWidth: context.drawingBufferWidth,
95
- drawingBufferHeight: context.drawingBufferHeight,
96
- layerInit: _layerInit
97
- });
98
- // Validate session
99
- if (!(session instanceof XRSession)) {
100
- console.error('[IWER] XRWebGLBinding: Invalid session type');
101
- throw new TypeError('XRWebGLBinding constructor argument 1 is not of type XRSession');
102
- }
103
- // Check if session has ended
104
- if (session[P_SESSION].ended) {
105
- console.error('[IWER] XRWebGLBinding: Session has ended');
106
- throw new DOMException('Session has ended', 'InvalidStateError');
107
- }
108
- // Validate WebGL context
109
- if (!context || (!(context instanceof WebGLRenderingContext) &&
110
- !(context instanceof WebGL2RenderingContext))) {
111
- console.error('[IWER] XRWebGLBinding: Invalid WebGL context');
112
- throw new TypeError('XRWebGLBinding constructor argument 2 is not a valid WebGL context');
113
- }
114
- this.session = session;
115
- this.context = context;
116
- console.log('[IWER] XRWebGLBinding constructor completed successfully');
117
- }
118
- /**
119
- * Creates a projection layer that behaves exactly like XRWebGLLayer
120
- * but with the projection layer API surface that three.js r179+ expects.
121
- */
122
- createProjectionLayer(init = {}) {
123
- console.log('[IWER] XRWebGLBinding.createProjectionLayer called with init:', init);
124
- const projectionLayer = new XRProjectionLayer(this.session, this.context, init);
125
- console.log('[IWER] XRWebGLBinding.createProjectionLayer created layer:', {
126
- textureWidth: projectionLayer.textureWidth,
127
- textureHeight: projectionLayer.textureHeight,
128
- ignoreDepthValues: projectionLayer.ignoreDepthValues,
129
- layout: projectionLayer.layout
130
- });
131
- return projectionLayer;
132
- }
133
- /**
134
- * Gets the viewport for a given view and layer.
135
- * This is used by three.js for sub-image rendering.
136
- */
137
- getViewSubImage(_layer, _view) {
138
- console.log('[IWER] XRWebGLBinding.getViewSubImage called:', {
139
- layer: _layer,
140
- view: _view
141
- });
142
- // For emulation, return a basic sub-image that matches the canvas dimensions
143
- const canvas = this.context.canvas;
144
- const result = {
145
- viewport: {
146
- x: 0,
147
- y: 0,
148
- width: canvas.width || this.context.drawingBufferWidth,
149
- height: canvas.height || this.context.drawingBufferHeight,
150
- },
151
- texture: null, // three.js will handle texture creation
152
- };
153
- console.log('[IWER] XRWebGLBinding.getViewSubImage returning:', result);
154
- return result;
155
- }
156
- /**
157
- * Gets a depth sub-image for the given layer and view.
158
- */
159
- getDepthSubImage(_layer, _view) {
160
- console.log('[IWER] XRWebGLBinding.getDepthSubImage called:', {
161
- layer: _layer,
162
- view: _view
163
- });
164
- // Return null - depth rendering is handled by three.js WebGLRenderer
165
- console.log('[IWER] XRWebGLBinding.getDepthSubImage returning: null');
166
- return null;
167
- }
168
- /**
169
- * Gets the native framebuffer scale factor.
170
- */
171
- static getNativeFramebufferScaleFactor(session) {
172
- console.log('[IWER] XRWebGLBinding.getNativeFramebufferScaleFactor called:', session);
173
- if (!(session instanceof XRSession)) {
174
- console.error('[IWER] XRWebGLBinding.getNativeFramebufferScaleFactor: Invalid session');
175
- throw new TypeError('getNativeFramebufferScaleFactor must be passed a session.');
176
- }
177
- if (session[P_SESSION].ended) {
178
- console.log('[IWER] XRWebGLBinding.getNativeFramebufferScaleFactor: Session ended, returning 0.0');
179
- return 0.0;
180
- }
181
- console.log('[IWER] XRWebGLBinding.getNativeFramebufferScaleFactor returning: 1.0');
182
- // Return 1.0 for emulation - matches XRWebGLLayer implementation
183
- return 1.0;
184
- }
185
- }
186
- //# sourceMappingURL=XRWebGLBinding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XRWebGLBinding.js","sourceRoot":"","sources":["../../src/layers/XRWebGLBinding.ts"],"names":[],"mappings":"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"}