@babylonjs/core 5.27.1 → 5.28.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.
- package/Behaviors/Meshes/handConstraintBehavior.js +4 -4
- package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
- package/Engines/engine.d.ts +898 -273
- package/Engines/nullEngine.d.ts +7 -0
- package/Engines/nullEngine.js +42 -0
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Loading/sceneLoader.js +2 -2
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +5 -4
- package/Materials/Textures/baseTexture.js +1 -0
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/thinTexture.d.ts +3 -3
- package/Materials/Textures/thinTexture.js.map +1 -1
- package/Meshes/mesh.d.ts +1 -1
- package/Meshes/mesh.js +2 -1
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/transformNode.d.ts +7 -1
- package/Meshes/transformNode.js +15 -4
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/assetsManager.d.ts +22 -4
- package/Misc/assetsManager.js +20 -8
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/dds.js +1 -1
- package/Misc/dds.js.map +1 -1
- package/Misc/environmentTextureTools.js +1 -1
- package/Misc/environmentTextureTools.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +4 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +3 -3
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
- package/XR/features/WebXRHandTracking.d.ts +3 -3
- package/XR/features/WebXRHandTracking.js +100 -100
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRHitTest.js.map +1 -1
- package/XR/features/WebXRLightEstimation.js +1 -1
- package/XR/features/WebXRLightEstimation.js.map +1 -1
- package/XR/webXRInput.js.map +1 -1
- package/XR/webXRManagedOutputCanvas.js +0 -1
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRWebGLLayer.js +3 -0
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/package.json +1 -1
package/Engines/engine.d.ts
CHANGED
|
@@ -2299,20 +2299,64 @@ interface Gamepad {
|
|
|
2299
2299
|
|
|
2300
2300
|
var VRFrameData: any;
|
|
2301
2301
|
|
|
2302
|
-
|
|
2302
|
+
// Type definitions for non-npm package webxr 0.5
|
|
2303
|
+
// Project: https://www.w3.org/TR/webxr/
|
|
2304
|
+
// Definitions by: Rob Rohan <https://github.com/robrohan>
|
|
2305
|
+
// Raanan Weber <https://github.com/RaananW>
|
|
2306
|
+
// Sean T. McBeth <https://github.com/capnmidnight>
|
|
2307
|
+
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
2308
|
+
// Minimum TypeScript Version: 3.7
|
|
2309
|
+
|
|
2310
|
+
// Most of this was hand written and... more or less copied from the following
|
|
2311
|
+
// sites:
|
|
2312
|
+
// https://www.w3.org/TR/webxr/
|
|
2313
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API
|
|
2314
|
+
// https://www.w3.org/immersive-web/
|
|
2315
|
+
// https://github.com/immersive-web
|
|
2316
|
+
//
|
|
2317
|
+
|
|
2318
|
+
/**
|
|
2319
|
+
* ref: https://immersive-web.github.io/webxr/#navigator-xr-attribute
|
|
2320
|
+
*/
|
|
2321
|
+
interface Navigator {
|
|
2322
|
+
/**
|
|
2323
|
+
* An XRSystem object is the entry point to the API, used to query for XR features
|
|
2324
|
+
* available to the user agent and initiate communication with XR hardware via the
|
|
2325
|
+
* creation of XRSessions.
|
|
2326
|
+
*/
|
|
2327
|
+
xr?: XRSystem | undefined;
|
|
2328
|
+
}
|
|
2329
|
+
|
|
2330
|
+
/**
|
|
2331
|
+
* WebGL Context Compatability
|
|
2332
|
+
*
|
|
2333
|
+
* ref: https://immersive-web.github.io/webxr/#contextcompatibility
|
|
2334
|
+
*/
|
|
2335
|
+
interface WebGLContextAttributes {
|
|
2336
|
+
xrCompatible?: boolean | undefined;
|
|
2337
|
+
}
|
|
2338
|
+
|
|
2339
|
+
interface WebGLRenderingContextBase {
|
|
2340
|
+
makeXRCompatible(): Promise<void>;
|
|
2341
|
+
}
|
|
2342
|
+
|
|
2303
2343
|
/**
|
|
2304
2344
|
* Available session modes
|
|
2345
|
+
*
|
|
2346
|
+
* ref: https://immersive-web.github.io/webxr/#xrsessionmode-enum
|
|
2305
2347
|
*/
|
|
2306
2348
|
type XRSessionMode = "inline" | "immersive-vr" | "immersive-ar";
|
|
2307
2349
|
|
|
2308
2350
|
/**
|
|
2309
2351
|
* Reference space types
|
|
2310
2352
|
*/
|
|
2311
|
-
type XRReferenceSpaceType = "viewer" | "local" | "local-floor" | "unbounded";
|
|
2312
|
-
type XRBoundedReferenceSpaceType = "bounded-floor";
|
|
2353
|
+
type XRReferenceSpaceType = "viewer" | "local" | "local-floor" | "bounded-floor" | "unbounded";
|
|
2313
2354
|
|
|
2314
2355
|
type XREnvironmentBlendMode = "opaque" | "additive" | "alpha-blend";
|
|
2315
2356
|
|
|
2357
|
+
/**
|
|
2358
|
+
* ref: https://immersive-web.github.io/webxr/#xrsession-interface
|
|
2359
|
+
*/
|
|
2316
2360
|
type XRVisibilityState = "visible" | "visible-blurred" | "hidden";
|
|
2317
2361
|
|
|
2318
2362
|
/**
|
|
@@ -2330,67 +2374,57 @@ type XRTargetRayMode = "gaze" | "tracked-pointer" | "screen";
|
|
|
2330
2374
|
*/
|
|
2331
2375
|
type XREye = "none" | "left" | "right";
|
|
2332
2376
|
|
|
2333
|
-
/**
|
|
2334
|
-
* Type of XR events available
|
|
2335
|
-
*/
|
|
2336
|
-
type XREventType =
|
|
2337
|
-
| "devicechange"
|
|
2338
|
-
| "visibilitychange"
|
|
2339
|
-
| "end"
|
|
2340
|
-
| "inputsourceschange"
|
|
2341
|
-
| "select"
|
|
2342
|
-
| "selectstart"
|
|
2343
|
-
| "selectend"
|
|
2344
|
-
| "squeeze"
|
|
2345
|
-
| "squeezestart"
|
|
2346
|
-
| "squeezeend"
|
|
2347
|
-
| "reset"
|
|
2348
|
-
| "eyetrackingstart"
|
|
2349
|
-
| "eyetrackingend";
|
|
2350
|
-
|
|
2351
|
-
type XRDOMOverlayType = "screen" | "floating" | "head-locked";
|
|
2352
|
-
|
|
2353
|
-
type XRReflectionFormat = "srgba8" | "rgba16f";
|
|
2354
|
-
|
|
2355
2377
|
type XRFrameRequestCallback = (time: DOMHighResTimeStamp, frame: XRFrame) => void;
|
|
2356
2378
|
|
|
2357
|
-
|
|
2358
|
-
type
|
|
2379
|
+
interface XRSystemDeviceChangeEvent extends Event {
|
|
2380
|
+
type: "devicechange";
|
|
2381
|
+
}
|
|
2359
2382
|
|
|
2360
|
-
|
|
2383
|
+
interface XRSystemDeviceChangeEventHandler {
|
|
2384
|
+
(event: XRSystemDeviceChangeEvent): any;
|
|
2385
|
+
}
|
|
2361
2386
|
|
|
2362
|
-
interface
|
|
2387
|
+
interface XRSystemEventMap {
|
|
2388
|
+
devicechange: XRSystemDeviceChangeEvent;
|
|
2389
|
+
}
|
|
2363
2390
|
|
|
2364
|
-
|
|
2391
|
+
/**
|
|
2392
|
+
* An XRSystem object is the entry point to the API, used to query for XR features available
|
|
2393
|
+
* to the user agent and initiate communication with XR hardware via the creation of
|
|
2394
|
+
* XRSessions.
|
|
2395
|
+
*
|
|
2396
|
+
* ref: https://immersive-web.github.io/webxr/#xrsystem-interface
|
|
2397
|
+
*/
|
|
2398
|
+
interface XRSystem extends EventTarget {
|
|
2365
2399
|
/**
|
|
2366
|
-
*
|
|
2400
|
+
* Attempts to initialize an XRSession for the given mode if possible, entering immersive
|
|
2401
|
+
* mode if necessary.
|
|
2402
|
+
* @param mode
|
|
2403
|
+
* @param options
|
|
2367
2404
|
*/
|
|
2368
|
-
|
|
2369
|
-
};
|
|
2370
|
-
|
|
2371
|
-
type XRLightProbeInit = {
|
|
2372
|
-
reflectionFormat: XRReflectionFormat;
|
|
2373
|
-
};
|
|
2405
|
+
requestSession(mode: XRSessionMode, options?: XRSessionInit): Promise<XRSession>;
|
|
2374
2406
|
|
|
2375
|
-
interface XRSessionInit {
|
|
2376
|
-
optionalFeatures?: string[];
|
|
2377
|
-
requiredFeatures?: string[];
|
|
2378
|
-
trackedImages?: XRTrackedImageInit[];
|
|
2379
2407
|
/**
|
|
2380
|
-
*
|
|
2408
|
+
* Queries if a given mode may be supported by the user agent and device capabilities.
|
|
2409
|
+
* @param mode
|
|
2381
2410
|
*/
|
|
2382
|
-
|
|
2383
|
-
}
|
|
2411
|
+
isSessionSupported(mode: XRSessionMode): Promise<boolean>;
|
|
2384
2412
|
|
|
2385
|
-
|
|
2386
|
-
readonly session: XRSession;
|
|
2387
|
-
}
|
|
2413
|
+
ondevicechange: XRSystemDeviceChangeEventHandler | null;
|
|
2388
2414
|
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2415
|
+
addEventListener<K extends keyof XRSystemEventMap>(type: K, listener: (this: XRSystem, ev: XRSystemEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2416
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2417
|
+
removeEventListener<K extends keyof XRSystemEventMap>(type: K, listener: (this: XRSystem, ev: XRSystemEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2418
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2392
2419
|
}
|
|
2393
2420
|
|
|
2421
|
+
abstract class XRSystem implements XRSystem {}
|
|
2422
|
+
|
|
2423
|
+
/**
|
|
2424
|
+
* Describes a viewport, or rectangular region, of a graphics surface.
|
|
2425
|
+
*
|
|
2426
|
+
* ref: https://immersive-web.github.io/webxr/#xrviewport-interface
|
|
2427
|
+
*/
|
|
2394
2428
|
interface XRViewport {
|
|
2395
2429
|
readonly x: number;
|
|
2396
2430
|
readonly y: number;
|
|
@@ -2398,215 +2432,296 @@ interface XRViewport {
|
|
|
2398
2432
|
readonly height: number;
|
|
2399
2433
|
}
|
|
2400
2434
|
|
|
2401
|
-
|
|
2402
|
-
antialias?: boolean;
|
|
2403
|
-
depth?: boolean;
|
|
2404
|
-
stencil?: boolean;
|
|
2405
|
-
alpha?: boolean;
|
|
2406
|
-
multiview?: boolean;
|
|
2407
|
-
framebufferScaleFactor?: number;
|
|
2408
|
-
}
|
|
2409
|
-
|
|
2410
|
-
// https://www.w3.org/TR/webxrlayers-1/#XRWebGLBindingtype
|
|
2411
|
-
class XRWebGLBinding {
|
|
2412
|
-
constructor(xrSession: XRSession, context: WebGLRenderingContext | WebGL2RenderingContext);
|
|
2413
|
-
getReflectionCubeMap: (lightProbe: XRLightProbe) => WebGLTexture;
|
|
2414
|
-
|
|
2415
|
-
// https://immersive-web.github.io/layers/#XRWebGLBindingtype
|
|
2416
|
-
createProjectionLayer(init: XRProjectionLayerInit): XRProjectionLayer;
|
|
2417
|
-
getSubImage(layer: XRCompositionLayer, frame: XRFrame, eye?: XREye): XRWebGLSubImage;
|
|
2418
|
-
getViewSubImage(layer: XRProjectionLayer, view: XRView): XRWebGLSubImage;
|
|
2419
|
-
}
|
|
2420
|
-
|
|
2421
|
-
class XRWebGLLayer implements XRLayer {
|
|
2422
|
-
static getNativeFramebufferScaleFactor(session: XRSession): number;
|
|
2423
|
-
constructor(session: XRSession, context: WebGLRenderingContext | WebGL2RenderingContext, layerInit?: XRWebGLLayerInit);
|
|
2424
|
-
readonly antialias: boolean;
|
|
2425
|
-
readonly framebuffer: WebGLFramebuffer;
|
|
2426
|
-
readonly framebufferWidth: number;
|
|
2427
|
-
readonly framebufferHeight: number;
|
|
2428
|
-
readonly ignoreDepthValues: boolean;
|
|
2429
|
-
fixedFoveation?: number | null;
|
|
2430
|
-
getViewport: (view: XRView) => XRViewport;
|
|
2431
|
-
|
|
2432
|
-
// Methods for EventTarget required through XRLayer
|
|
2433
|
-
addEventListener(): void;
|
|
2434
|
-
dispatchEvent(): boolean;
|
|
2435
|
-
removeEventListener(): void;
|
|
2436
|
-
}
|
|
2437
|
-
|
|
2438
|
-
type XRLayerLayout = "default" | "mono" | "stereo" | "stereo-left-right" | "stereo-top-bottom";
|
|
2439
|
-
|
|
2440
|
-
// https://immersive-web.github.io/layers/#xrcompositionlayertype
|
|
2441
|
-
interface XRCompositionLayer extends XRLayer {
|
|
2442
|
-
layout: XRLayerLayout;
|
|
2435
|
+
abstract class XRViewport implements XRViewport {}
|
|
2443
2436
|
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2437
|
+
/**
|
|
2438
|
+
* Represents a virtual coordinate system with an origin that corresponds to a physical location.
|
|
2439
|
+
* Spatial data that is requested from the API or given to the API is always expressed in relation
|
|
2440
|
+
* to a specific XRSpace at the time of a specific XRFrame. Numeric values such as pose positions
|
|
2441
|
+
* are coordinates in that space relative to its origin. The interface is intentionally opaque.
|
|
2442
|
+
*
|
|
2443
|
+
* ref: https://immersive-web.github.io/webxr/#xrspace-interface
|
|
2444
|
+
*/
|
|
2445
|
+
// tslint:disable-next-line no-empty-interface
|
|
2446
|
+
interface XRSpace extends EventTarget {}
|
|
2447
2447
|
|
|
2448
|
-
|
|
2448
|
+
abstract class XRSpace implements XRSpace {}
|
|
2449
2449
|
|
|
2450
|
-
|
|
2450
|
+
interface XRRenderStateInit {
|
|
2451
|
+
baseLayer?: XRWebGLLayer | undefined;
|
|
2452
|
+
depthFar?: number | undefined;
|
|
2453
|
+
depthNear?: number | undefined;
|
|
2454
|
+
inlineVerticalFieldOfView?: number | undefined;
|
|
2451
2455
|
}
|
|
2452
2456
|
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
depthFormat: GLenum; // Default 0x1902, DEPTH_COMPONENT
|
|
2459
|
-
scaleFactor: number; // Default 1.0;
|
|
2457
|
+
interface XRRenderState {
|
|
2458
|
+
readonly baseLayer?: XRWebGLLayer | undefined;
|
|
2459
|
+
readonly depthFar: number;
|
|
2460
|
+
readonly depthNear: number;
|
|
2461
|
+
readonly inlineVerticalFieldOfView?: number | undefined;
|
|
2460
2462
|
}
|
|
2461
2463
|
|
|
2462
|
-
|
|
2463
|
-
textureWidth: number;
|
|
2464
|
-
textureHeight: number;
|
|
2465
|
-
textureArrayLength: number;
|
|
2464
|
+
abstract class XRRenderState implements XRRenderState {}
|
|
2466
2465
|
|
|
2467
|
-
|
|
2468
|
-
|
|
2466
|
+
interface XRReferenceSpaceEventInit extends EventInit {
|
|
2467
|
+
referenceSpace?: XRReferenceSpace | undefined;
|
|
2468
|
+
transform?: XRRigidTransform | undefined;
|
|
2469
2469
|
}
|
|
2470
2470
|
|
|
2471
|
-
|
|
2472
|
-
|
|
2471
|
+
/**
|
|
2472
|
+
* XRReferenceSpaceEvents are fired to indicate changes to the state of an XRReferenceSpace.
|
|
2473
|
+
*
|
|
2474
|
+
* ref: https://immersive-web.github.io/webxr/#xrreferencespaceevent-interface
|
|
2475
|
+
*/
|
|
2476
|
+
interface XRReferenceSpaceEvent extends Event {
|
|
2477
|
+
readonly type: "reset";
|
|
2478
|
+
readonly referenceSpace: XRReferenceSpace;
|
|
2479
|
+
readonly transform?: XRRigidTransform | undefined;
|
|
2473
2480
|
}
|
|
2474
2481
|
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
imageIndex?: number;
|
|
2479
|
-
textureWidth: number;
|
|
2480
|
-
textureHeight: number;
|
|
2482
|
+
// tslint:disable-next-line no-unnecessary-class
|
|
2483
|
+
class XRReferenceSpaceEvent implements XRReferenceSpaceEvent {
|
|
2484
|
+
constructor(type: "reset", eventInitDict?: XRReferenceSpaceEventInit);
|
|
2481
2485
|
}
|
|
2482
2486
|
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
interface XRRenderState {
|
|
2487
|
-
readonly baseLayer?: XRWebGLLayer;
|
|
2488
|
-
readonly depthFar: number;
|
|
2489
|
-
readonly depthNear: number;
|
|
2490
|
-
readonly inlineVerticalFieldOfView?: number;
|
|
2491
|
-
readonly layers?: XRLayer[];
|
|
2487
|
+
interface XRReferenceSpaceEventHandler {
|
|
2488
|
+
(event: XRReferenceSpaceEvent): any;
|
|
2492
2489
|
}
|
|
2493
2490
|
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
baseLayer?: XRWebGLLayer;
|
|
2497
|
-
depthFar: number;
|
|
2498
|
-
depthNear: number;
|
|
2499
|
-
inlineVerticalFieldOfView?: number;
|
|
2500
|
-
layers?: XRLayer[];
|
|
2491
|
+
interface XRReferenceSpaceEventMap {
|
|
2492
|
+
reset: XRReferenceSpaceEvent;
|
|
2501
2493
|
}
|
|
2502
2494
|
|
|
2495
|
+
/**
|
|
2496
|
+
* One of several common XRSpaces that applications can use to establish a spatial relationship
|
|
2497
|
+
* with the user's physical environment.
|
|
2498
|
+
*
|
|
2499
|
+
* ref: https://immersive-web.github.io/webxr/#xrreferencespace-interface
|
|
2500
|
+
*/
|
|
2503
2501
|
interface XRReferenceSpace extends XRSpace {
|
|
2504
2502
|
getOffsetReferenceSpace(originOffset: XRRigidTransform): XRReferenceSpace;
|
|
2505
|
-
onreset:
|
|
2503
|
+
onreset: XRReferenceSpaceEventHandler;
|
|
2504
|
+
|
|
2505
|
+
addEventListener<K extends keyof XRReferenceSpaceEventMap>(
|
|
2506
|
+
type: K,
|
|
2507
|
+
listener: (this: XRReferenceSpace, ev: XRReferenceSpaceEventMap[K]) => any,
|
|
2508
|
+
options?: boolean | AddEventListenerOptions
|
|
2509
|
+
): void;
|
|
2510
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2511
|
+
removeEventListener<K extends keyof XRReferenceSpaceEventMap>(
|
|
2512
|
+
type: K,
|
|
2513
|
+
listener: (this: XRReferenceSpace, ev: XRReferenceSpaceEventMap[K]) => any,
|
|
2514
|
+
options?: boolean | EventListenerOptions
|
|
2515
|
+
): void;
|
|
2516
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2506
2517
|
}
|
|
2507
2518
|
|
|
2508
|
-
|
|
2519
|
+
abstract class XRReferenceSpace implements XRReferenceSpace {}
|
|
2520
|
+
|
|
2521
|
+
/**
|
|
2522
|
+
* Extends XRReferenceSpace to include boundsGeometry, indicating the pre-configured boundaries
|
|
2523
|
+
* of the user's space.
|
|
2524
|
+
*
|
|
2525
|
+
* ref: https://immersive-web.github.io/webxr/#xrboundedreferencespace-interface
|
|
2526
|
+
*/
|
|
2527
|
+
interface XRBoundedReferenceSpace extends XRReferenceSpace {
|
|
2509
2528
|
readonly boundsGeometry: DOMPointReadOnly[];
|
|
2510
2529
|
}
|
|
2511
2530
|
|
|
2531
|
+
abstract class XRBoundedReferenceSpace implements XRBoundedReferenceSpace {}
|
|
2532
|
+
|
|
2533
|
+
/**
|
|
2534
|
+
* Represents an XR input source, which is any input mechanism which allows the user to perform
|
|
2535
|
+
* targeted actions in the same virtual space as the viewer. Example XR input sources include,
|
|
2536
|
+
* but are not limited to, handheld controllers, optically tracked hands, and gaze-based input
|
|
2537
|
+
* methods that operate on the viewer's pose. Input mechanisms which are not explicitly associated
|
|
2538
|
+
* with the XR device, such as traditional gamepads, mice, or keyboards SHOULD NOT be considered
|
|
2539
|
+
* XR input sources.
|
|
2540
|
+
* ref: https://immersive-web.github.io/webxr/#xrinputsource-interface
|
|
2541
|
+
*/
|
|
2512
2542
|
interface XRInputSource {
|
|
2513
2543
|
readonly handedness: XRHandedness;
|
|
2514
2544
|
readonly targetRayMode: XRTargetRayMode;
|
|
2515
2545
|
readonly targetRaySpace: XRSpace;
|
|
2516
|
-
readonly gripSpace?: XRSpace;
|
|
2517
|
-
readonly gamepad?: Gamepad;
|
|
2518
|
-
readonly profiles:
|
|
2519
|
-
readonly hand?: XRHand;
|
|
2546
|
+
readonly gripSpace?: XRSpace | undefined;
|
|
2547
|
+
readonly gamepad?: Gamepad | undefined;
|
|
2548
|
+
readonly profiles: string[];
|
|
2549
|
+
readonly hand?: XRHand | undefined;
|
|
2520
2550
|
}
|
|
2521
2551
|
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2552
|
+
abstract class XRInputSource implements XRInputSource {}
|
|
2553
|
+
|
|
2554
|
+
/**
|
|
2555
|
+
* Represents a list of XRInputSources. It is used in favor of a frozen array type when the contents
|
|
2556
|
+
* of the list are expected to change over time, such as with the XRSession inputSources attribute.
|
|
2557
|
+
* ref: https://immersive-web.github.io/webxr/#xrinputsourcearray-interface
|
|
2558
|
+
*/
|
|
2559
|
+
interface XRInputSourceArray {
|
|
2560
|
+
[Symbol.iterator](): IterableIterator<XRInputSource>;
|
|
2561
|
+
[n: number]: XRInputSource;
|
|
2562
|
+
|
|
2563
|
+
length: number;
|
|
2564
|
+
|
|
2565
|
+
entries(): IterableIterator<[number, XRInputSource]>;
|
|
2566
|
+
keys(): IterableIterator<number>;
|
|
2567
|
+
values(): IterableIterator<XRInputSource>;
|
|
2568
|
+
|
|
2569
|
+
forEach(callbackfn: (value: XRInputSource, index: number, array: XRInputSource[]) => void, thisArg?: any): void;
|
|
2526
2570
|
}
|
|
2527
2571
|
|
|
2572
|
+
abstract class XRInputSourceArray implements XRInputSourceArray {}
|
|
2573
|
+
|
|
2574
|
+
/**
|
|
2575
|
+
* Describes a position and orientation in space relative to an XRSpace.
|
|
2576
|
+
*
|
|
2577
|
+
* ref: https://immersive-web.github.io/webxr/#xrpose-interface
|
|
2578
|
+
*/
|
|
2528
2579
|
interface XRPose {
|
|
2529
2580
|
readonly transform: XRRigidTransform;
|
|
2530
2581
|
readonly emulatedPosition: boolean;
|
|
2531
|
-
readonly linearVelocity?: DOMPointReadOnly;
|
|
2532
|
-
readonly angularVelocity?: DOMPointReadOnly;
|
|
2533
2582
|
}
|
|
2534
2583
|
|
|
2535
|
-
|
|
2536
|
-
detectedPlanes?: XRPlaneSet;
|
|
2537
|
-
}
|
|
2584
|
+
abstract class XRPose implements XRPose {}
|
|
2538
2585
|
|
|
2586
|
+
/**
|
|
2587
|
+
* Represents a snapshot of the state of all of the tracked objects for an XRSession. Applications
|
|
2588
|
+
* can acquire an XRFrame by calling requestAnimationFrame() on an XRSession with an
|
|
2589
|
+
* XRFrameRequestCallback. When the callback is called it will be passed an XRFrame.
|
|
2590
|
+
* Events which need to communicate tracking state, such as the select event, will also provide an
|
|
2591
|
+
* XRFrame.
|
|
2592
|
+
*
|
|
2593
|
+
* ref: https://immersive-web.github.io/webxr/#xrframe-interface
|
|
2594
|
+
*/
|
|
2539
2595
|
interface XRFrame {
|
|
2540
2596
|
readonly session: XRSession;
|
|
2597
|
+
// BABYLON CHANGE - switched to optional
|
|
2598
|
+
readonly predictedDisplayTime?: DOMHighResTimeStamp;
|
|
2599
|
+
|
|
2600
|
+
/**
|
|
2601
|
+
* Provides the pose of space relative to baseSpace as an XRPose, at the time represented by
|
|
2602
|
+
* the XRFrame.
|
|
2603
|
+
*
|
|
2604
|
+
* @param space
|
|
2605
|
+
* @param baseSpace
|
|
2606
|
+
*/
|
|
2541
2607
|
getPose(space: XRSpace, baseSpace: XRSpace): XRPose | undefined;
|
|
2542
|
-
|
|
2608
|
+
|
|
2609
|
+
/**
|
|
2610
|
+
* Provides the pose of the viewer relative to referenceSpace as an XRViewerPose, at the
|
|
2611
|
+
* XRFrame's time.
|
|
2612
|
+
*
|
|
2613
|
+
* @param referenceSpace
|
|
2614
|
+
*/
|
|
2543
2615
|
getViewerPose(referenceSpace: XRReferenceSpace): XRViewerPose | undefined;
|
|
2616
|
+
}
|
|
2544
2617
|
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
getJointPose?(joint: XRJointSpace, baseSpace: XRSpace): XRJointPose;
|
|
2556
|
-
fillJointRadii?(jointSpaces: XRJointSpace[], radii: Float32Array): boolean;
|
|
2557
|
-
// Image tracking
|
|
2558
|
-
getImageTrackingResults?(): Array<XRImageTrackingResult>;
|
|
2559
|
-
getLightEstimate(xrLightProbe: XRLightProbe): XRLightEstimate;
|
|
2618
|
+
abstract class XRFrame implements XRFrame {}
|
|
2619
|
+
|
|
2620
|
+
/**
|
|
2621
|
+
* Type of XR events available
|
|
2622
|
+
*/
|
|
2623
|
+
type XRInputSourceEventType = "select" | "selectend" | "selectstart" | "squeeze" | "squeezeend" | "squeezestart";
|
|
2624
|
+
|
|
2625
|
+
interface XRInputSourceEventInit extends EventInit {
|
|
2626
|
+
frame?: XRFrame | undefined;
|
|
2627
|
+
inputSource?: XRInputSource | undefined;
|
|
2560
2628
|
}
|
|
2561
2629
|
|
|
2562
|
-
|
|
2630
|
+
/**
|
|
2631
|
+
* XRInputSourceEvents are fired to indicate changes to the state of an XRInputSource.
|
|
2632
|
+
* ref: https://immersive-web.github.io/webxr/#xrinputsourceevent-interface
|
|
2633
|
+
*/
|
|
2634
|
+
class XRInputSourceEvent extends Event {
|
|
2635
|
+
readonly type: XRInputSourceEventType;
|
|
2563
2636
|
readonly frame: XRFrame;
|
|
2564
2637
|
readonly inputSource: XRInputSource;
|
|
2638
|
+
|
|
2639
|
+
constructor(type: XRInputSourceEventType, eventInitDict?: XRInputSourceEventInit);
|
|
2565
2640
|
}
|
|
2566
2641
|
|
|
2567
|
-
interface
|
|
2568
|
-
|
|
2642
|
+
interface XRInputSourceEventHandler {
|
|
2643
|
+
(evt: XRInputSourceEvent): any;
|
|
2569
2644
|
}
|
|
2570
2645
|
|
|
2571
|
-
type
|
|
2646
|
+
type XRSessionEventType = "end" | "visibilitychange" | "frameratechange";
|
|
2572
2647
|
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
*/
|
|
2577
|
-
type: XRDOMOverlayType | null;
|
|
2578
|
-
};
|
|
2648
|
+
interface XRSessionEventInit extends EventInit {
|
|
2649
|
+
session: XRSession;
|
|
2650
|
+
}
|
|
2579
2651
|
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2652
|
+
/**
|
|
2653
|
+
* XRSessionEvents are fired to indicate changes to the state of an XRSession.
|
|
2654
|
+
* ref: https://immersive-web.github.io/webxr/#xrsessionevent-interface
|
|
2655
|
+
*/
|
|
2656
|
+
class XRSessionEvent extends Event {
|
|
2657
|
+
readonly session: XRSession;
|
|
2658
|
+
constructor(type: XRSessionEventType, eventInitDict?: XRSessionEventInit);
|
|
2583
2659
|
}
|
|
2584
2660
|
|
|
2585
|
-
interface
|
|
2586
|
-
|
|
2587
|
-
|
|
2661
|
+
interface XRSessionEventHandler {
|
|
2662
|
+
(evt: XRSessionEvent): any;
|
|
2663
|
+
}
|
|
2664
|
+
|
|
2665
|
+
/**
|
|
2666
|
+
* ref: https://immersive-web.github.io/webxr/#feature-dependencies
|
|
2667
|
+
*/
|
|
2668
|
+
interface XRSessionInit {
|
|
2669
|
+
optionalFeatures?: string[] | undefined;
|
|
2670
|
+
requiredFeatures?: string[] | undefined;
|
|
2671
|
+
}
|
|
2672
|
+
|
|
2673
|
+
interface XRSessionEventMap {
|
|
2674
|
+
inputsourceschange: XRInputSourceChangeEvent;
|
|
2675
|
+
end: XRSessionEvent;
|
|
2676
|
+
visibilitychange: XRSessionEvent;
|
|
2677
|
+
frameratechange: XRSessionEvent;
|
|
2678
|
+
select: XRInputSourceEvent;
|
|
2679
|
+
selectstart: XRInputSourceEvent;
|
|
2680
|
+
selectend: XRInputSourceEvent;
|
|
2681
|
+
squeeze: XRInputSourceEvent;
|
|
2682
|
+
squeezestart: XRInputSourceEvent;
|
|
2683
|
+
squeezeend: XRInputSourceEvent;
|
|
2684
|
+
eyetrackingstart: XREyeTrackingEvent;
|
|
2685
|
+
eyetrackingend: XREyeTrackingEvent;
|
|
2686
|
+
}
|
|
2687
|
+
|
|
2688
|
+
/**
|
|
2689
|
+
* Any interaction with XR hardware is done via an XRSession object, which can only be
|
|
2690
|
+
* retrieved by calling requestSession() on the XRSystem object. Once a session has been
|
|
2691
|
+
* successfully acquired, it can be used to poll the viewer pose, query information about
|
|
2692
|
+
* the user's environment, and present imagery to the user.
|
|
2693
|
+
*
|
|
2694
|
+
* ref: https://immersive-web.github.io/webxr/#xrsession-interface
|
|
2695
|
+
*/
|
|
2696
|
+
interface XRSession extends EventTarget {
|
|
2588
2697
|
/**
|
|
2589
2698
|
* Returns a list of this session's XRInputSources, each representing an input device
|
|
2590
2699
|
* used to control the camera and/or scene.
|
|
2591
2700
|
*/
|
|
2592
|
-
readonly inputSources:
|
|
2701
|
+
readonly inputSources: XRInputSourceArray;
|
|
2593
2702
|
/**
|
|
2594
2703
|
* object which contains options affecting how the imagery is rendered.
|
|
2595
2704
|
* This includes things such as the near and far clipping planes
|
|
2596
2705
|
*/
|
|
2597
2706
|
readonly renderState: XRRenderState;
|
|
2707
|
+
readonly environmentBlendMode: XREnvironmentBlendMode;
|
|
2598
2708
|
readonly visibilityState: XRVisibilityState;
|
|
2709
|
+
readonly frameRate?: number | undefined;
|
|
2710
|
+
readonly supportedFrameRates?: Float32Array | undefined;
|
|
2711
|
+
|
|
2599
2712
|
/**
|
|
2600
2713
|
* Removes a callback from the animation frame painting callback from
|
|
2601
2714
|
* XRSession's set of animation frame rendering callbacks, given the
|
|
2602
2715
|
* identifying handle returned by a previous call to requestAnimationFrame().
|
|
2603
2716
|
*/
|
|
2604
|
-
cancelAnimationFrame
|
|
2717
|
+
cancelAnimationFrame(id: number): void;
|
|
2718
|
+
|
|
2605
2719
|
/**
|
|
2606
2720
|
* Ends the WebXR session. Returns a promise which resolves when the
|
|
2607
2721
|
* session has been shut down.
|
|
2608
2722
|
*/
|
|
2609
2723
|
end(): Promise<void>;
|
|
2724
|
+
|
|
2610
2725
|
/**
|
|
2611
2726
|
* Schedules the specified method to be called the next time the user agent
|
|
2612
2727
|
* is working on rendering an animation frame for the WebXR device. Returns an
|
|
@@ -2614,168 +2729,255 @@ interface XRSession {
|
|
|
2614
2729
|
* canceling the callback using cancelAnimationFrame(). This method is comparable
|
|
2615
2730
|
* to the Window.requestAnimationFrame() method.
|
|
2616
2731
|
*/
|
|
2617
|
-
requestAnimationFrame
|
|
2732
|
+
requestAnimationFrame(callback: XRFrameRequestCallback): number;
|
|
2733
|
+
|
|
2618
2734
|
/**
|
|
2619
2735
|
* Requests that a new XRReferenceSpace of the specified type be created.
|
|
2620
2736
|
* Returns a promise which resolves with the XRReferenceSpace or
|
|
2621
2737
|
* XRBoundedReferenceSpace which was requested, or throws a NotSupportedError if
|
|
2622
2738
|
* the requested space type isn't supported by the device.
|
|
2623
2739
|
*/
|
|
2624
|
-
requestReferenceSpace(type: XRReferenceSpaceType): Promise<XRReferenceSpace>;
|
|
2625
|
-
requestReferenceSpace(type: XRBoundedReferenceSpaceType): Promise<XRBoundedReferenceSpace>;
|
|
2626
|
-
|
|
2627
|
-
/**
|
|
2628
|
-
* The XRSession interface is extended with the ability to create new XRLightProbe instances.
|
|
2629
|
-
* XRLightProbe instances have a session object, which is the XRSession that created this XRLightProbe.
|
|
2630
|
-
*
|
|
2631
|
-
* Can reject with with a "NotSupportedError" DOMException
|
|
2632
|
-
*/
|
|
2633
|
-
requestLightProbe(options?: XRLightProbeInit): Promise<XRLightProbe>;
|
|
2634
|
-
|
|
2635
|
-
updateRenderState(state: XRRenderStateInit): void;
|
|
2636
|
-
|
|
2637
|
-
onend: XREventHandler;
|
|
2638
|
-
oneyetrackingstart: XREventHandler;
|
|
2639
|
-
oneyetrackingend: XREventHandler;
|
|
2640
|
-
oninputsourceschange: XREventHandler;
|
|
2641
|
-
onselect: XREventHandler;
|
|
2642
|
-
onselectstart: XREventHandler;
|
|
2643
|
-
onselectend: XREventHandler;
|
|
2644
|
-
onsqueeze: XREventHandler;
|
|
2645
|
-
onsqueezestart: XREventHandler;
|
|
2646
|
-
onsqueezeend: XREventHandler;
|
|
2647
|
-
onvisibilitychange: XREventHandler;
|
|
2648
|
-
|
|
2649
|
-
// hit test
|
|
2650
|
-
requestHitTestSource?(options: XRHitTestOptionsInit): Promise<XRHitTestSource>;
|
|
2651
|
-
requestHitTestSourceForTransientInput?(options: XRTransientInputHitTestOptionsInit): Promise<XRTransientInputHitTestSource>;
|
|
2652
|
-
|
|
2653
|
-
// legacy AR hit test
|
|
2654
|
-
requestHitTest?(ray: XRRay, referenceSpace: XRReferenceSpace): Promise<XRHitResult[]>;
|
|
2740
|
+
requestReferenceSpace(type: XRReferenceSpaceType): Promise<XRReferenceSpace | XRBoundedReferenceSpace>;
|
|
2655
2741
|
|
|
2656
|
-
|
|
2657
|
-
updateWorldTrackingState?(options: { planeDetectionState?: { enabled: boolean } }): void;
|
|
2742
|
+
updateRenderState(renderStateInit?: XRRenderStateInit): Promise<void>;
|
|
2658
2743
|
|
|
2659
|
-
|
|
2660
|
-
getTrackedImageScores?(): Promise<XRImageTrackingScore[]>;
|
|
2744
|
+
updateTargetFrameRate(rate: number): Promise<void>;
|
|
2661
2745
|
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2746
|
+
onend: XRSessionEventHandler;
|
|
2747
|
+
oninputsourceschange: XRInputSourceChangeEventHandler;
|
|
2748
|
+
onselect: XRInputSourceEventHandler;
|
|
2749
|
+
onselectstart: XRInputSourceEventHandler;
|
|
2750
|
+
onselectend: XRInputSourceEventHandler;
|
|
2751
|
+
onsqueeze: XRInputSourceEventHandler;
|
|
2752
|
+
onsqueezestart: XRInputSourceEventHandler;
|
|
2753
|
+
onsqueezeend: XRInputSourceEventHandler;
|
|
2754
|
+
onvisibilitychange: XRSessionEventHandler;
|
|
2755
|
+
onframeratechange: XRSessionEventHandler;
|
|
2670
2756
|
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2757
|
+
addEventListener<K extends keyof XRSessionEventMap>(type: K, listener: (this: XRSession, ev: XRSessionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2758
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2759
|
+
removeEventListener<K extends keyof XRSessionEventMap>(type: K, listener: (this: XRSession, ev: XRSessionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2760
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2674
2761
|
}
|
|
2675
2762
|
|
|
2763
|
+
abstract class XRSession implements XRSession {}
|
|
2764
|
+
|
|
2765
|
+
/**
|
|
2766
|
+
* An XRPose describing the state of a viewer of the XR scene as tracked by the XR
|
|
2767
|
+
* device. A viewer may represent a tracked piece of hardware, the observed position
|
|
2768
|
+
* of a user's head relative to the hardware, or some other means of computing a series
|
|
2769
|
+
* of viewpoints into the XR scene. XRViewerPoses can only be queried relative to an
|
|
2770
|
+
* XRReferenceSpace. It provides, in addition to the XRPose values, an array of views
|
|
2771
|
+
* which include rigid transforms to indicate the viewpoint and projection matrices.
|
|
2772
|
+
* These values should be used by the application when rendering a frame of an XR scene.
|
|
2773
|
+
*
|
|
2774
|
+
* ref: https://immersive-web.github.io/webxr/#xrviewerpose-interface
|
|
2775
|
+
*/
|
|
2676
2776
|
interface XRViewerPose extends XRPose {
|
|
2677
|
-
readonly views:
|
|
2777
|
+
readonly views: ReadonlyArray<XRView>;
|
|
2678
2778
|
}
|
|
2679
2779
|
|
|
2780
|
+
abstract class XRViewerPose implements XRViewerPose {}
|
|
2781
|
+
|
|
2782
|
+
/**
|
|
2783
|
+
* A transform described by a position and orientation. When interpreting an
|
|
2784
|
+
* XRRigidTransform the orientation is always applied prior to the position.
|
|
2785
|
+
*
|
|
2786
|
+
* ref: https://immersive-web.github.io/webxr/#xrrigidtransform-interface
|
|
2787
|
+
*/
|
|
2680
2788
|
class XRRigidTransform {
|
|
2789
|
+
readonly position: DOMPointReadOnly;
|
|
2790
|
+
readonly orientation: DOMPointReadOnly;
|
|
2791
|
+
readonly matrix: Float32Array;
|
|
2792
|
+
readonly inverse: XRRigidTransform;
|
|
2793
|
+
|
|
2681
2794
|
constructor(position?: DOMPointInit, direction?: DOMPointInit);
|
|
2682
|
-
position: DOMPointReadOnly;
|
|
2683
|
-
orientation: DOMPointReadOnly;
|
|
2684
|
-
matrix: Float32Array;
|
|
2685
|
-
inverse: XRRigidTransform;
|
|
2686
2795
|
}
|
|
2687
2796
|
|
|
2797
|
+
/**
|
|
2798
|
+
* Describes a single view into an XR scene for a given frame.
|
|
2799
|
+
*
|
|
2800
|
+
* ref: https://immersive-web.github.io/webxr/#xrview-interface
|
|
2801
|
+
*/
|
|
2688
2802
|
interface XRView {
|
|
2689
2803
|
readonly eye: XREye;
|
|
2690
2804
|
readonly projectionMatrix: Float32Array;
|
|
2691
2805
|
readonly transform: XRRigidTransform;
|
|
2692
|
-
readonly recommendedViewportScale?: number;
|
|
2806
|
+
readonly recommendedViewportScale?: number | undefined;
|
|
2693
2807
|
requestViewportScale(scale: number): void;
|
|
2694
2808
|
}
|
|
2695
2809
|
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2810
|
+
abstract class XRView implements XRView {}
|
|
2811
|
+
|
|
2812
|
+
/**
|
|
2813
|
+
* XRInputSourcesChangeEvents are fired to indicate changes to the XRInputSources that are
|
|
2814
|
+
* available to an XRSession.
|
|
2815
|
+
* ref: https://immersive-web.github.io/webxr/#xrinputsourceschangeevent-interface
|
|
2816
|
+
*/
|
|
2817
|
+
interface XRInputSourceChangeEvent extends XRSessionEvent {
|
|
2818
|
+
readonly removed: ReadonlyArray<XRInputSource>;
|
|
2819
|
+
readonly added: ReadonlyArray<XRInputSource>;
|
|
2820
|
+
}
|
|
2821
|
+
|
|
2822
|
+
interface XRInputSourceChangeEventHandler {
|
|
2823
|
+
(evt: XRInputSourceChangeEvent): any;
|
|
2700
2824
|
}
|
|
2701
2825
|
|
|
2702
2826
|
// Experimental/Draft features
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
|
|
2707
|
-
|
|
2827
|
+
|
|
2828
|
+
// Anchors
|
|
2829
|
+
type XRAnchorSet = Set<XRAnchor>;
|
|
2830
|
+
|
|
2831
|
+
interface XRAnchor {
|
|
2832
|
+
anchorSpace: XRSpace;
|
|
2833
|
+
delete(): void;
|
|
2708
2834
|
}
|
|
2709
2835
|
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2836
|
+
abstract class XRAnchor implements XRAnchor {}
|
|
2837
|
+
|
|
2838
|
+
interface XRFrame {
|
|
2839
|
+
trackedAnchors?: XRAnchorSet | undefined;
|
|
2840
|
+
createAnchor?: (pose: XRRigidTransform, space: XRSpace) => Promise<XRAnchor> | undefined;
|
|
2714
2841
|
}
|
|
2715
2842
|
|
|
2716
|
-
|
|
2717
|
-
|
|
2843
|
+
// AR Hit testing
|
|
2844
|
+
class XRRay {
|
|
2845
|
+
readonly origin: DOMPointReadOnly;
|
|
2846
|
+
readonly direction: DOMPointReadOnly;
|
|
2847
|
+
readonly matrix: Float32Array;
|
|
2848
|
+
|
|
2849
|
+
constructor(transformOrOrigin?: XRRigidTransform | DOMPointInit, direction?: DOMPointInit);
|
|
2718
2850
|
}
|
|
2719
2851
|
|
|
2852
|
+
type XRHitTestTrackableType = "point" | "plane" | "mesh";
|
|
2853
|
+
|
|
2720
2854
|
interface XRTransientInputHitTestResult {
|
|
2721
2855
|
readonly inputSource: XRInputSource;
|
|
2722
|
-
readonly results:
|
|
2856
|
+
readonly results: ReadonlyArray<XRHitTestResult>;
|
|
2857
|
+
}
|
|
2858
|
+
|
|
2859
|
+
class XRTransientInputHitTestResult {
|
|
2860
|
+
prototype: XRTransientInputHitTestResult;
|
|
2723
2861
|
}
|
|
2724
2862
|
|
|
2725
2863
|
interface XRHitTestResult {
|
|
2726
2864
|
getPose(baseSpace: XRSpace): XRPose | undefined;
|
|
2727
2865
|
// When anchor system is enabled
|
|
2728
|
-
createAnchor
|
|
2866
|
+
createAnchor?: (pose: XRRigidTransform) => Promise<XRAnchor> | undefined;
|
|
2729
2867
|
}
|
|
2730
2868
|
|
|
2869
|
+
abstract class XRHitTestResult implements XRHitTestResult {}
|
|
2870
|
+
|
|
2731
2871
|
interface XRHitTestSource {
|
|
2732
2872
|
cancel(): void;
|
|
2733
2873
|
}
|
|
2734
2874
|
|
|
2875
|
+
abstract class XRHitTestSource implements XRHitTestSource {}
|
|
2876
|
+
|
|
2735
2877
|
interface XRTransientInputHitTestSource {
|
|
2736
2878
|
cancel(): void;
|
|
2737
2879
|
}
|
|
2738
2880
|
|
|
2881
|
+
abstract class XRTransientInputHitTestSource implements XRTransientInputHitTestSource {}
|
|
2882
|
+
|
|
2739
2883
|
interface XRHitTestOptionsInit {
|
|
2740
2884
|
space: XRSpace;
|
|
2741
|
-
entityTypes?:
|
|
2742
|
-
offsetRay?: XRRay;
|
|
2885
|
+
entityTypes?: XRHitTestTrackableType[] | undefined;
|
|
2886
|
+
offsetRay?: XRRay | undefined;
|
|
2743
2887
|
}
|
|
2744
2888
|
|
|
2745
2889
|
interface XRTransientInputHitTestOptionsInit {
|
|
2746
2890
|
profile: string;
|
|
2747
|
-
entityTypes?:
|
|
2748
|
-
offsetRay?: XRRay;
|
|
2891
|
+
entityTypes?: XRHitTestTrackableType[] | undefined;
|
|
2892
|
+
offsetRay?: XRRay | undefined;
|
|
2749
2893
|
}
|
|
2750
2894
|
|
|
2751
|
-
interface
|
|
2752
|
-
|
|
2753
|
-
|
|
2895
|
+
interface XRSession {
|
|
2896
|
+
requestHitTestSource?: (options: XRHitTestOptionsInit) => Promise<XRHitTestSource>;
|
|
2897
|
+
requestHitTestSourceForTransientInput?: (options: XRTransientInputHitTestOptionsInit) => Promise<XRTransientInputHitTestSource>;
|
|
2898
|
+
|
|
2899
|
+
// Legacy
|
|
2900
|
+
requestHitTest?: (ray: XRRay, referenceSpace: XRReferenceSpace) => Promise<XRHitResult[]>;
|
|
2901
|
+
}
|
|
2902
|
+
|
|
2903
|
+
interface XRFrame {
|
|
2904
|
+
getHitTestResults(hitTestSource: XRHitTestSource): XRHitTestResult[];
|
|
2905
|
+
getHitTestResultsForTransientInput(hitTestSource: XRTransientInputHitTestSource): XRTransientInputHitTestResult[];
|
|
2906
|
+
}
|
|
2907
|
+
|
|
2908
|
+
// Legacy
|
|
2909
|
+
interface XRHitResult {
|
|
2910
|
+
hitMatrix: Float32Array;
|
|
2754
2911
|
}
|
|
2755
2912
|
|
|
2913
|
+
// Plane detection
|
|
2914
|
+
type XRPlaneSet = Set<XRPlane>;
|
|
2915
|
+
|
|
2916
|
+
type XRPlaneOrientation = "horizontal" | "vertical";
|
|
2917
|
+
|
|
2756
2918
|
interface XRPlane {
|
|
2757
|
-
orientation:
|
|
2919
|
+
orientation: XRPlaneOrientation;
|
|
2758
2920
|
planeSpace: XRSpace;
|
|
2759
|
-
polygon:
|
|
2921
|
+
polygon: DOMPointReadOnly[];
|
|
2760
2922
|
lastChangedTime: number;
|
|
2761
2923
|
}
|
|
2762
2924
|
|
|
2763
|
-
|
|
2925
|
+
abstract class XRPlane implements XRPlane {}
|
|
2926
|
+
|
|
2927
|
+
interface XRSession {
|
|
2928
|
+
// Legacy
|
|
2929
|
+
updateWorldTrackingState?: (options: { planeDetectionState?: { enabled: boolean } | undefined }) => void | undefined;
|
|
2930
|
+
}
|
|
2931
|
+
|
|
2932
|
+
// interface XRFrame {
|
|
2933
|
+
// worldInformation?:
|
|
2934
|
+
// | {
|
|
2935
|
+
// detectedPlanes?: XRPlaneSet | undefined;
|
|
2936
|
+
// }
|
|
2937
|
+
// | undefined;
|
|
2938
|
+
// }
|
|
2939
|
+
|
|
2940
|
+
// Hand Tracking
|
|
2941
|
+
type XRHandJoint =
|
|
2942
|
+
| "wrist"
|
|
2943
|
+
| "thumb-metacarpal"
|
|
2944
|
+
| "thumb-phalanx-proximal"
|
|
2945
|
+
| "thumb-phalanx-distal"
|
|
2946
|
+
| "thumb-tip"
|
|
2947
|
+
| "index-finger-metacarpal"
|
|
2948
|
+
| "index-finger-phalanx-proximal"
|
|
2949
|
+
| "index-finger-phalanx-intermediate"
|
|
2950
|
+
| "index-finger-phalanx-distal"
|
|
2951
|
+
| "index-finger-tip"
|
|
2952
|
+
| "middle-finger-metacarpal"
|
|
2953
|
+
| "middle-finger-phalanx-proximal"
|
|
2954
|
+
| "middle-finger-phalanx-intermediate"
|
|
2955
|
+
| "middle-finger-phalanx-distal"
|
|
2956
|
+
| "middle-finger-tip"
|
|
2957
|
+
| "ring-finger-metacarpal"
|
|
2958
|
+
| "ring-finger-phalanx-proximal"
|
|
2959
|
+
| "ring-finger-phalanx-intermediate"
|
|
2960
|
+
| "ring-finger-phalanx-distal"
|
|
2961
|
+
| "ring-finger-tip"
|
|
2962
|
+
| "pinky-finger-metacarpal"
|
|
2963
|
+
| "pinky-finger-phalanx-proximal"
|
|
2964
|
+
| "pinky-finger-phalanx-intermediate"
|
|
2965
|
+
| "pinky-finger-phalanx-distal"
|
|
2966
|
+
| "pinky-finger-tip";
|
|
2967
|
+
|
|
2968
|
+
interface XRJointSpace extends XRSpace {
|
|
2969
|
+
readonly jointName: XRHandJoint;
|
|
2970
|
+
}
|
|
2971
|
+
|
|
2972
|
+
abstract class XRJointSpace implements XRJointSpace {}
|
|
2764
2973
|
|
|
2765
2974
|
interface XRJointPose extends XRPose {
|
|
2766
|
-
radius: number | undefined;
|
|
2975
|
+
readonly radius: number | undefined;
|
|
2767
2976
|
}
|
|
2768
2977
|
|
|
2769
|
-
|
|
2770
|
-
type XRHandJoint = string;
|
|
2771
|
-
|
|
2772
|
-
interface XRHand extends Iterable<XRJointSpace> {
|
|
2773
|
-
readonly size: number;
|
|
2774
|
-
|
|
2775
|
-
[index: number]: XRJointSpace;
|
|
2776
|
-
|
|
2777
|
-
get(joint: XRHandJoint): XRJointSpace;
|
|
2978
|
+
abstract class XRJointPose implements XRJointPose {}
|
|
2778
2979
|
|
|
2980
|
+
interface XRHand extends Map<number, XRJointSpace> {
|
|
2779
2981
|
readonly WRIST: number;
|
|
2780
2982
|
|
|
2781
2983
|
readonly THUMB_METACARPAL: number;
|
|
@@ -2808,6 +3010,381 @@ interface XRHand extends Iterable<XRJointSpace> {
|
|
|
2808
3010
|
readonly LITTLE_PHALANX_TIP: number;
|
|
2809
3011
|
}
|
|
2810
3012
|
|
|
3013
|
+
abstract class XRHand extends Map implements XRHand {}
|
|
3014
|
+
|
|
3015
|
+
interface XRFrame {
|
|
3016
|
+
getJointPose?: (joint: XRJointSpace, baseSpace: XRSpace) => XRJointPose | undefined;
|
|
3017
|
+
}
|
|
3018
|
+
|
|
3019
|
+
// WebXR Layers
|
|
3020
|
+
|
|
3021
|
+
/**
|
|
3022
|
+
* The base class for XRWebGLLayer and other layer types introduced by future extensions.
|
|
3023
|
+
* ref: https://immersive-web.github.io/webxr/#xrlayer-interface
|
|
3024
|
+
*/
|
|
3025
|
+
// tslint:disable-next-line no-empty-interface
|
|
3026
|
+
interface XRLayer extends EventTarget {}
|
|
3027
|
+
|
|
3028
|
+
abstract class XRLayer implements XRLayer {}
|
|
3029
|
+
|
|
3030
|
+
interface XRWebGLLayerInit {
|
|
3031
|
+
antialias?: boolean | undefined;
|
|
3032
|
+
depth?: boolean | undefined;
|
|
3033
|
+
stencil?: boolean | undefined;
|
|
3034
|
+
alpha?: boolean | undefined;
|
|
3035
|
+
ignoreDepthValues?: boolean | undefined;
|
|
3036
|
+
framebufferScaleFactor?: number | undefined;
|
|
3037
|
+
}
|
|
3038
|
+
|
|
3039
|
+
/**
|
|
3040
|
+
* A layer which provides a WebGL framebuffer to render into, enabling hardware accelerated
|
|
3041
|
+
* rendering of 3D graphics to be presented on the XR device. *
|
|
3042
|
+
* ref: https://immersive-web.github.io/webxr/#xrwebgllayer-interface
|
|
3043
|
+
*/
|
|
3044
|
+
class XRWebGLLayer extends XRLayer {
|
|
3045
|
+
static getNativeFramebufferScaleFactor(session: XRSession): number;
|
|
3046
|
+
|
|
3047
|
+
constructor(session: XRSession, context: WebGLRenderingContext | WebGL2RenderingContext, layerInit?: XRWebGLLayerInit);
|
|
3048
|
+
|
|
3049
|
+
readonly antialias: boolean;
|
|
3050
|
+
readonly ignoreDepthValues: boolean;
|
|
3051
|
+
fixedFoveation?: number | undefined;
|
|
3052
|
+
|
|
3053
|
+
readonly framebuffer: WebGLFramebuffer;
|
|
3054
|
+
readonly framebufferWidth: number;
|
|
3055
|
+
readonly framebufferHeight: number;
|
|
3056
|
+
|
|
3057
|
+
getViewport(view: XRView): XRViewport | undefined;
|
|
3058
|
+
}
|
|
3059
|
+
|
|
3060
|
+
interface XRRenderStateInit {
|
|
3061
|
+
layers?: XRLayer[] | undefined;
|
|
3062
|
+
}
|
|
3063
|
+
|
|
3064
|
+
interface XRRenderState {
|
|
3065
|
+
readonly layers?: XRLayer[] | undefined;
|
|
3066
|
+
}
|
|
3067
|
+
|
|
3068
|
+
type XRLayerEventType = "redraw";
|
|
3069
|
+
|
|
3070
|
+
interface XRLayerEvent extends Event {
|
|
3071
|
+
readonly type: XRLayerEventType;
|
|
3072
|
+
readonly layer: XRLayer;
|
|
3073
|
+
}
|
|
3074
|
+
|
|
3075
|
+
interface XRCompositionLayerEventMap {
|
|
3076
|
+
redraw: XRLayerEvent;
|
|
3077
|
+
}
|
|
3078
|
+
|
|
3079
|
+
interface XRCompositionLayer extends XRLayer {
|
|
3080
|
+
readonly layout: XRLayerLayout;
|
|
3081
|
+
blendTextureSourceAlpha: boolean;
|
|
3082
|
+
chromaticAberrationCorrection?: boolean | undefined;
|
|
3083
|
+
readonly mipLevels: number;
|
|
3084
|
+
readonly needsRedraw: boolean;
|
|
3085
|
+
destroy(): void;
|
|
3086
|
+
|
|
3087
|
+
space: XRSpace;
|
|
3088
|
+
|
|
3089
|
+
// Events
|
|
3090
|
+
onredraw: (evt: XRCompositionLayerEventMap["redraw"]) => any;
|
|
3091
|
+
|
|
3092
|
+
addEventListener<K extends keyof XRCompositionLayerEventMap>(
|
|
3093
|
+
this: XRCompositionLayer,
|
|
3094
|
+
type: K,
|
|
3095
|
+
callback: (evt: XRCompositionLayerEventMap[K]) => any,
|
|
3096
|
+
options?: boolean | AddEventListenerOptions
|
|
3097
|
+
): void;
|
|
3098
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3099
|
+
|
|
3100
|
+
removeEventListener<K extends keyof XRCompositionLayerEventMap>(this: XRCompositionLayer, type: K, callback: (evt: XRCompositionLayerEventMap[K]) => any): void;
|
|
3101
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
3102
|
+
}
|
|
3103
|
+
|
|
3104
|
+
abstract class XRCompositionLayer implements XRCompositionLayer {}
|
|
3105
|
+
|
|
3106
|
+
type XRTextureType = "texture" | "texture-array";
|
|
3107
|
+
|
|
3108
|
+
type XRLayerLayout = "default" | "mono" | "stereo" | "stereo-left-right" | "stereo-top-bottom";
|
|
3109
|
+
|
|
3110
|
+
interface XRProjectionLayerInit {
|
|
3111
|
+
scaleFactor?: number | undefined;
|
|
3112
|
+
textureType?: XRTextureType | undefined;
|
|
3113
|
+
colorFormat?: GLenum | undefined;
|
|
3114
|
+
depthFormat?: GLenum | undefined;
|
|
3115
|
+
}
|
|
3116
|
+
|
|
3117
|
+
interface XRProjectionLayer extends XRCompositionLayer {
|
|
3118
|
+
readonly textureWidth: number;
|
|
3119
|
+
readonly textureHeight: number;
|
|
3120
|
+
readonly textureArrayLength: number;
|
|
3121
|
+
readonly ignoreDepthValues: number;
|
|
3122
|
+
fixedFoveation: number;
|
|
3123
|
+
}
|
|
3124
|
+
|
|
3125
|
+
abstract class XRProjectionLayer implements XRProjectionLayer {}
|
|
3126
|
+
|
|
3127
|
+
interface XRLayerInit {
|
|
3128
|
+
mipLevels?: number | undefined;
|
|
3129
|
+
viewPixelWidth: number;
|
|
3130
|
+
viewPixelHeight: number;
|
|
3131
|
+
isStatic?: boolean | undefined;
|
|
3132
|
+
colorFormat?: GLenum | undefined;
|
|
3133
|
+
depthFormat?: GLenum | undefined;
|
|
3134
|
+
space: XRSpace;
|
|
3135
|
+
layout?: XRLayerLayout | undefined;
|
|
3136
|
+
}
|
|
3137
|
+
|
|
3138
|
+
interface XRMediaLayerInit {
|
|
3139
|
+
invertStereo?: boolean | undefined;
|
|
3140
|
+
space: XRSpace;
|
|
3141
|
+
layout?: XRLayerLayout | undefined;
|
|
3142
|
+
}
|
|
3143
|
+
|
|
3144
|
+
interface XRCylinderLayerInit extends XRLayerInit {
|
|
3145
|
+
textureType?: XRTextureType | undefined;
|
|
3146
|
+
transform: XRRigidTransform;
|
|
3147
|
+
radius?: number | undefined;
|
|
3148
|
+
centralAngle?: number | undefined;
|
|
3149
|
+
aspectRatio?: number | undefined;
|
|
3150
|
+
}
|
|
3151
|
+
|
|
3152
|
+
interface XRMediaCylinderLayerInit extends XRMediaLayerInit {
|
|
3153
|
+
transform?: XRRigidTransform | undefined;
|
|
3154
|
+
radius?: number | undefined;
|
|
3155
|
+
centralAngle?: number | undefined;
|
|
3156
|
+
aspectRatio?: number | undefined;
|
|
3157
|
+
}
|
|
3158
|
+
|
|
3159
|
+
interface XRCylinderLayer extends XRCompositionLayer {
|
|
3160
|
+
transform: XRRigidTransform;
|
|
3161
|
+
radius: number;
|
|
3162
|
+
centralAngle: number;
|
|
3163
|
+
aspectRatio: number;
|
|
3164
|
+
}
|
|
3165
|
+
|
|
3166
|
+
abstract class XRCylinderLayer implements XRCylinderLayer {}
|
|
3167
|
+
|
|
3168
|
+
interface XRQuadLayerInit extends XRLayerInit {
|
|
3169
|
+
textureType?: XRTextureType | undefined;
|
|
3170
|
+
transform?: XRRigidTransform | undefined;
|
|
3171
|
+
width?: number | undefined;
|
|
3172
|
+
height?: number | undefined;
|
|
3173
|
+
}
|
|
3174
|
+
|
|
3175
|
+
interface XRMediaQuadLayerInit extends XRMediaLayerInit {
|
|
3176
|
+
transform?: XRRigidTransform | undefined;
|
|
3177
|
+
width?: number | undefined;
|
|
3178
|
+
height?: number | undefined;
|
|
3179
|
+
}
|
|
3180
|
+
|
|
3181
|
+
interface XRQuadLayer extends XRCompositionLayer {
|
|
3182
|
+
transform: XRRigidTransform;
|
|
3183
|
+
width: number;
|
|
3184
|
+
height: number;
|
|
3185
|
+
}
|
|
3186
|
+
|
|
3187
|
+
abstract class XRQuadLayer implements XRQuadLayer {}
|
|
3188
|
+
|
|
3189
|
+
interface XREquirectLayerInit extends XRLayerInit {
|
|
3190
|
+
textureType?: XRTextureType | undefined;
|
|
3191
|
+
transform?: XRRigidTransform | undefined;
|
|
3192
|
+
radius?: number | undefined;
|
|
3193
|
+
centralHorizontalAngle?: number | undefined;
|
|
3194
|
+
upperVerticalAngle?: number | undefined;
|
|
3195
|
+
lowerVerticalAngle?: number | undefined;
|
|
3196
|
+
}
|
|
3197
|
+
|
|
3198
|
+
interface XRMediaEquirectLayerInit extends XRMediaLayerInit {
|
|
3199
|
+
transform?: XRRigidTransform | undefined;
|
|
3200
|
+
radius?: number | undefined;
|
|
3201
|
+
centralHorizontalAngle?: number | undefined;
|
|
3202
|
+
upperVerticalAngle?: number | undefined;
|
|
3203
|
+
lowerVerticalAngle?: number | undefined;
|
|
3204
|
+
}
|
|
3205
|
+
|
|
3206
|
+
interface XREquirectLayer extends XRCompositionLayer {
|
|
3207
|
+
transform: XRRigidTransform;
|
|
3208
|
+
radius: number;
|
|
3209
|
+
centralHorizontalAngle: number;
|
|
3210
|
+
upperVerticalAngle: number;
|
|
3211
|
+
lowerVerticalAngle: number;
|
|
3212
|
+
}
|
|
3213
|
+
|
|
3214
|
+
abstract class XREquirectLayer implements XREquirectLayer {}
|
|
3215
|
+
|
|
3216
|
+
interface XRCubeLayerInit extends XRLayerInit {
|
|
3217
|
+
orientation?: DOMPointReadOnly | undefined;
|
|
3218
|
+
}
|
|
3219
|
+
|
|
3220
|
+
interface XRCubeLayer extends XRCompositionLayer {
|
|
3221
|
+
orientation: DOMPointReadOnly;
|
|
3222
|
+
}
|
|
3223
|
+
|
|
3224
|
+
abstract class XRCubeLayer implements XRCubeLayer {}
|
|
3225
|
+
|
|
3226
|
+
interface XRSubImage {
|
|
3227
|
+
readonly viewport: XRViewport;
|
|
3228
|
+
}
|
|
3229
|
+
|
|
3230
|
+
abstract class XRSubImage implements XRSubImage {}
|
|
3231
|
+
|
|
3232
|
+
interface XRWebGLSubImage extends XRSubImage {
|
|
3233
|
+
readonly colorTexture: WebGLTexture;
|
|
3234
|
+
readonly depthStencilTexture: WebGLTexture;
|
|
3235
|
+
readonly imageIndex: number;
|
|
3236
|
+
readonly textureWidth: number;
|
|
3237
|
+
readonly textureHeight: number;
|
|
3238
|
+
}
|
|
3239
|
+
|
|
3240
|
+
abstract class XRWebGLSubImage implements XRWebGLSubImage {}
|
|
3241
|
+
|
|
3242
|
+
class XRWebGLBinding {
|
|
3243
|
+
readonly nativeProjectionScaleFactor: number;
|
|
3244
|
+
|
|
3245
|
+
constructor(session: XRSession, context: WebGLRenderingContext);
|
|
3246
|
+
|
|
3247
|
+
createProjectionLayer(init?: XRProjectionLayerInit): XRProjectionLayer;
|
|
3248
|
+
createQuadLayer(init?: XRQuadLayerInit): XRQuadLayer;
|
|
3249
|
+
createCylinderLayer(init?: XRCylinderLayerInit): XRCylinderLayer;
|
|
3250
|
+
createEquirectLayer(init?: XREquirectLayerInit): XREquirectLayer;
|
|
3251
|
+
createCubeLayer(init?: XRCubeLayerInit): XRCubeLayer;
|
|
3252
|
+
|
|
3253
|
+
getSubImage(layer: XRCompositionLayer, frame: XRFrame, eye?: XREye): XRWebGLSubImage;
|
|
3254
|
+
getViewSubImage(layer: XRProjectionLayer, view: XRView): XRWebGLSubImage;
|
|
3255
|
+
|
|
3256
|
+
// BABYLON addition
|
|
3257
|
+
getReflectionCubeMap: (lightProbe: XRLightProbe) => WebGLTexture;
|
|
3258
|
+
}
|
|
3259
|
+
|
|
3260
|
+
class XRMediaBinding {
|
|
3261
|
+
constructor(sesion: XRSession);
|
|
3262
|
+
|
|
3263
|
+
createQuadLayer(video: HTMLVideoElement, init?: XRMediaQuadLayerInit): XRQuadLayer;
|
|
3264
|
+
createCylinderLayer(video: HTMLVideoElement, init?: XRMediaCylinderLayerInit): XRCylinderLayer;
|
|
3265
|
+
createEquirectLayer(video: HTMLVideoElement, init?: XRMediaEquirectLayerInit): XREquirectLayer;
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3268
|
+
// WebGL extensions
|
|
3269
|
+
interface WebGLRenderingContextBase {
|
|
3270
|
+
getExtension(extensionName: "OCULUS_multiview"): OCULUS_multiview | null;
|
|
3271
|
+
}
|
|
3272
|
+
|
|
3273
|
+
enum XOVR_multiview2 {
|
|
3274
|
+
FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630,
|
|
3275
|
+
FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632,
|
|
3276
|
+
MAX_VIEWS_OVR = 0x9631,
|
|
3277
|
+
FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633,
|
|
3278
|
+
}
|
|
3279
|
+
|
|
3280
|
+
interface OVR_multiview2 {
|
|
3281
|
+
readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: number;
|
|
3282
|
+
readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: number;
|
|
3283
|
+
readonly MAX_VIEWS_OVR: number;
|
|
3284
|
+
readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: number;
|
|
3285
|
+
|
|
3286
|
+
framebufferTextureMultiviewOVR(target: GLenum, attachment: GLenum, texture: WebGLTexture, level: number, baseViewIndex: number, numViews: number): WebGLRenderbuffer;
|
|
3287
|
+
}
|
|
3288
|
+
|
|
3289
|
+
abstract class OVR_multiview2 implements OVR_multiview2 {}
|
|
3290
|
+
|
|
3291
|
+
// Oculus extensions
|
|
3292
|
+
interface XRSessionGrant {
|
|
3293
|
+
mode: XRSessionMode;
|
|
3294
|
+
}
|
|
3295
|
+
|
|
3296
|
+
interface XRSystemSessionGrantedEvent extends Event {
|
|
3297
|
+
type: "sessiongranted";
|
|
3298
|
+
session: XRSessionGrant;
|
|
3299
|
+
}
|
|
3300
|
+
|
|
3301
|
+
interface XRSystemSessionGrantedEventHandler {
|
|
3302
|
+
(event: XRSystemSessionGrantedEvent): any;
|
|
3303
|
+
}
|
|
3304
|
+
|
|
3305
|
+
interface XRSystemEventMap {
|
|
3306
|
+
// Session Grant events are an Meta Oculus Browser extension
|
|
3307
|
+
sessiongranted: XRSystemSessionGrantedEvent;
|
|
3308
|
+
}
|
|
3309
|
+
|
|
3310
|
+
interface XRSystem {
|
|
3311
|
+
onsessiongranted: XRSystemSessionGrantedEventHandler | null;
|
|
3312
|
+
}
|
|
3313
|
+
|
|
3314
|
+
interface OCULUS_multiview extends OVR_multiview2 {
|
|
3315
|
+
framebufferTextureMultisampleMultiviewOVR(
|
|
3316
|
+
target: GLenum,
|
|
3317
|
+
attachment: GLenum,
|
|
3318
|
+
texture: WebGLTexture | null,
|
|
3319
|
+
level: GLint,
|
|
3320
|
+
samples: GLsizei,
|
|
3321
|
+
baseViewIndex: GLint,
|
|
3322
|
+
numViews: GLsizei
|
|
3323
|
+
): void;
|
|
3324
|
+
}
|
|
3325
|
+
|
|
3326
|
+
abstract class OCULUS_multiview implements OCULUS_multiview {}
|
|
3327
|
+
|
|
3328
|
+
/**
|
|
3329
|
+
* BEGIN: WebXR DOM Overlays Module
|
|
3330
|
+
* https://immersive-web.github.io/dom-overlays/
|
|
3331
|
+
*/
|
|
3332
|
+
|
|
3333
|
+
interface GlobalEventHandlersEventMap {
|
|
3334
|
+
beforexrselect: XRSessionEvent;
|
|
3335
|
+
}
|
|
3336
|
+
|
|
3337
|
+
interface GlobalEventHandlers {
|
|
3338
|
+
/**
|
|
3339
|
+
* An XRSessionEvent of type beforexrselect is dispatched on the DOM overlay
|
|
3340
|
+
* element before generating a WebXR selectstart input event if the -Z axis
|
|
3341
|
+
* of the input source's targetRaySpace intersects the DOM overlay element
|
|
3342
|
+
* at the time the input device's primary action is triggered.
|
|
3343
|
+
*/
|
|
3344
|
+
onbeforexrselect: ((this: GlobalEventHandlers, ev: XRSessionEvent) => any) | null;
|
|
3345
|
+
}
|
|
3346
|
+
|
|
3347
|
+
interface XRDOMOverlayInit {
|
|
3348
|
+
root: Element;
|
|
3349
|
+
}
|
|
3350
|
+
|
|
3351
|
+
interface XRSessionInit {
|
|
3352
|
+
domOverlay?: XRDOMOverlayInit | undefined;
|
|
3353
|
+
}
|
|
3354
|
+
|
|
3355
|
+
type XRDOMOverlayType = "screen" | "floating" | "head-locked";
|
|
3356
|
+
|
|
3357
|
+
interface XRDOMOverlayState {
|
|
3358
|
+
type: XRDOMOverlayType;
|
|
3359
|
+
}
|
|
3360
|
+
|
|
3361
|
+
interface XRSession {
|
|
3362
|
+
readonly domOverlayState?: XRDOMOverlayState | undefined;
|
|
3363
|
+
}
|
|
3364
|
+
|
|
3365
|
+
/// BABYLON EDITS
|
|
3366
|
+
interface XREyeTrackingSourceEvent extends Event {
|
|
3367
|
+
readonly gazeSpace: XRSpace;
|
|
3368
|
+
}
|
|
3369
|
+
|
|
3370
|
+
interface XRFrame {
|
|
3371
|
+
fillPoses?(spaces: XRSpace[], baseSpace: XRSpace, transforms: Float32Array): boolean;
|
|
3372
|
+
// Anchors
|
|
3373
|
+
trackedAnchors?: XRAnchorSet;
|
|
3374
|
+
createAnchor?(pose: XRRigidTransform, space: XRSpace): Promise<XRAnchor>;
|
|
3375
|
+
// World geometries. DEPRECATED
|
|
3376
|
+
worldInformation?: XRWorldInformation;
|
|
3377
|
+
detectedPlanes?: XRPlaneSet;
|
|
3378
|
+
// Hand tracking
|
|
3379
|
+
getJointPose?(joint: XRJointSpace, baseSpace: XRSpace): XRJointPose;
|
|
3380
|
+
fillJointRadii?(jointSpaces: XRJointSpace[], radii: Float32Array): boolean;
|
|
3381
|
+
// Image tracking
|
|
3382
|
+
getImageTrackingResults?(): Array<XRImageTrackingResult>;
|
|
3383
|
+
getLightEstimate(xrLightProbe: XRLightProbe): XRLightEstimate;
|
|
3384
|
+
}
|
|
3385
|
+
|
|
3386
|
+
type XREventType = keyof XRSessionEventMap;
|
|
3387
|
+
|
|
2811
3388
|
type XRImageTrackingState = "tracked" | "emulated";
|
|
2812
3389
|
type XRImageTrackingScore = "untrackable" | "trackable";
|
|
2813
3390
|
|
|
@@ -2822,6 +3399,54 @@ interface XRImageTrackingResult {
|
|
|
2822
3399
|
readonly trackingState: XRImageTrackingState;
|
|
2823
3400
|
readonly measuredWidthInMeters: number;
|
|
2824
3401
|
}
|
|
3402
|
+
|
|
3403
|
+
interface XRPose {
|
|
3404
|
+
readonly linearVelocity?: DOMPointReadOnly;
|
|
3405
|
+
readonly angularVelocity?: DOMPointReadOnly;
|
|
3406
|
+
}
|
|
3407
|
+
|
|
3408
|
+
type XRLightProbeInit = {
|
|
3409
|
+
reflectionFormat: XRReflectionFormat;
|
|
3410
|
+
};
|
|
3411
|
+
|
|
3412
|
+
type XRReflectionFormat = "srgba8" | "rgba16f";
|
|
3413
|
+
|
|
3414
|
+
interface XRSession {
|
|
3415
|
+
readonly preferredReflectionFormat?: XRReflectionFormat;
|
|
3416
|
+
/**
|
|
3417
|
+
* The XRSession interface is extended with the ability to create new XRLightProbe instances.
|
|
3418
|
+
* XRLightProbe instances have a session object, which is the XRSession that created this XRLightProbe.
|
|
3419
|
+
*
|
|
3420
|
+
* Can reject with with a "NotSupportedError" DOMException
|
|
3421
|
+
*/
|
|
3422
|
+
requestLightProbe(options?: XRLightProbeInit): Promise<XRLightProbe>;
|
|
3423
|
+
|
|
3424
|
+
getTrackedImageScores?(): Promise<XRImageTrackingScore[]>;
|
|
3425
|
+
}
|
|
3426
|
+
|
|
3427
|
+
interface XRWorldInformation {
|
|
3428
|
+
detectedPlanes?: XRPlaneSet;
|
|
3429
|
+
}
|
|
3430
|
+
|
|
3431
|
+
interface XRSessionInit {
|
|
3432
|
+
trackedImages?: XRTrackedImageInit[];
|
|
3433
|
+
}
|
|
3434
|
+
|
|
3435
|
+
interface XRLightEstimate {
|
|
3436
|
+
readonly sphericalHarmonicsCoefficients: Float32Array;
|
|
3437
|
+
readonly primaryLightDirection: DOMPointReadOnly;
|
|
3438
|
+
readonly primaryLightIntensity: DOMPointReadOnly;
|
|
3439
|
+
}
|
|
3440
|
+
|
|
3441
|
+
interface XRLightProbe extends EventTarget {
|
|
3442
|
+
readonly probeSpace: XRSpace;
|
|
3443
|
+
onreflectionchange: XREventHandler;
|
|
3444
|
+
}
|
|
3445
|
+
|
|
3446
|
+
/**
|
|
3447
|
+
* END: WebXR DOM Overlays Module
|
|
3448
|
+
* https://immersive-web.github.io/dom-overlays/
|
|
3449
|
+
*/
|
|
2825
3450
|
|
|
2826
3451
|
// This file contains native only extensions for WebXR. These APIs are not supported in the browser yet.
|
|
2827
3452
|
// They are intended for use with either Babylon Native https://github.com/BabylonJS/BabylonNative or
|