webxr.d.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. declare var XRWebGLLayer: {
  73. prototype: XRWebGLLayer;
  74. new(session: XRSession, context: WebGLRenderingContext | undefined): XRWebGLLayer;
  75. };
  76. interface XRWebGLLayer {
  77. framebuffer: WebGLFramebuffer;
  78. framebufferWidth: number;
  79. framebufferHeight: number;
  80. getViewport: Function;
  81. }
  82. interface XRRigidTransform {
  83. position: DOMPointReadOnly;
  84. orientation: DOMPointReadOnly;
  85. matrix: Float32Array;
  86. inverse: XRRigidTransform;
  87. }
  88. interface XRView {
  89. eye: XREye;
  90. projectionMatrix: Float32Array;
  91. transform: XRRigidTransform;
  92. }
  93. interface XRInputSourceChangeEvent {
  94. session: XRSession;
  95. removed: Array<XRInputSource>;
  96. added: Array<XRInputSource>;
  97. }