webxr.d.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. type XRSessionMode =
  2. | "inline"
  3. | "immersive-vr"
  4. | "immersive-ar";
  5. type XRReferenceSpaceType =
  6. | "viewer"
  7. | "local"
  8. | "local-floor"
  9. | "bounded-floor"
  10. | "unbounded";
  11. type XREnvironmentBlendMode =
  12. | "opaque"
  13. | "additive"
  14. | "alpha-blend";
  15. type XRVisibilityState =
  16. | "visible"
  17. | "visible-blurred"
  18. | "hidden";
  19. type XRHandedness =
  20. | "none"
  21. | "left"
  22. | "right";
  23. type XRTargetRayMode =
  24. | "gaze"
  25. | "tracked-pointer"
  26. | "screen";
  27. type XREye =
  28. | "none"
  29. | "left"
  30. | "right";
  31. interface XRSpace extends EventTarget {
  32. }
  33. interface XRRenderState {
  34. depthNear?: number;
  35. depthFar?: number;
  36. inlineVerticalFieldOfView?: number;
  37. baseLayer?: XRWebGLLayer;
  38. }
  39. interface XRInputSource {
  40. handedness: XRHandedness;
  41. targetRayMode: XRTargetRayMode;
  42. targetRaySpace: XRSpace;
  43. gripSpace: XRSpace | undefined;
  44. gamepad: Gamepad | undefined;
  45. profiles: Array<string>;
  46. }
  47. interface XRSession {
  48. addEventListener: Function;
  49. requestReferenceSpace(type: XRReferenceSpaceType): Promise<XRReferenceSpace>;
  50. updateRenderState(XRRenderStateInit: XRRenderState): Promise<void>;
  51. requestAnimationFrame: Function;
  52. end(): Promise<void>;
  53. renderState: XRRenderState;
  54. inputSources: Array<XRInputSource>;
  55. }
  56. interface XRReferenceSpace extends XRSpace {
  57. getOffsetReferenceSpace(originOffset: XRRigidTransform): XRReferenceSpace;
  58. onreset: any;
  59. }
  60. interface XRFrame {
  61. session: XRSession;
  62. getViewerPose(referenceSpace: XRReferenceSpace): XRViewerPose | undefined;
  63. getPose(space: XRSpace, baseSpace: XRSpace): XRPose | undefined;
  64. }
  65. interface XRViewerPose extends XRPose {
  66. views: Array<XRView>;
  67. }
  68. interface XRPose {
  69. transform: XRRigidTransform;
  70. emulatedPosition: boolean;
  71. }
  72. interface XRWebGLLayerOptions {
  73. antialias ?: boolean;
  74. depth ?: boolean;
  75. stencil ?: boolean;
  76. alpha ?: boolean;
  77. multiview ?: boolean;
  78. framebufferScaleFactor ?: number;
  79. }
  80. declare var XRWebGLLayer: {
  81. prototype: XRWebGLLayer;
  82. new(session: XRSession, context: WebGLRenderingContext | undefined, options?: XRWebGLLayerOptions): XRWebGLLayer;
  83. };
  84. interface XRWebGLLayer {
  85. framebuffer: WebGLFramebuffer;
  86. framebufferWidth: number;
  87. framebufferHeight: number;
  88. getViewport: Function;
  89. }
  90. interface XRRigidTransform {
  91. position: DOMPointReadOnly;
  92. orientation: DOMPointReadOnly;
  93. matrix: Float32Array;
  94. inverse: XRRigidTransform;
  95. }
  96. interface XRView {
  97. eye: XREye;
  98. projectionMatrix: Float32Array;
  99. transform: XRRigidTransform;
  100. }
  101. interface XRInputSourceChangeEvent {
  102. session: XRSession;
  103. removed: Array<XRInputSource>;
  104. added: Array<XRInputSource>;
  105. }
  106. interface XRInputSourceEvent extends Event {
  107. readonly frame: XRFrame;
  108. readonly inputSource: XRInputSource;
  109. }