WebXRSpaceWarp.d.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import type { Engine } from "../../Engines/engine";
  2. import type { WebXRSessionManager } from "../webXRSessionManager";
  3. import { WebXRAbstractFeature } from "./WebXRAbstractFeature";
  4. import type { Nullable } from "../../types";
  5. import type { IWebXRRenderTargetTextureProvider } from "../webXRRenderTargetTextureProvider";
  6. import type { Viewport } from "../../Maths/math.viewport";
  7. import type { Scene } from "../../scene";
  8. import { RenderTargetTexture } from "../../Materials/Textures/renderTargetTexture";
  9. import "../../Shaders/velocity.fragment";
  10. import "../../Shaders/velocity.vertex";
  11. /**
  12. * Used for Space Warp render process
  13. */
  14. export declare class XRSpaceWarpRenderTarget extends RenderTargetTexture {
  15. private _velocityMaterial;
  16. private _originalPairing;
  17. private _previousWorldMatrices;
  18. private _previousTransforms;
  19. /**
  20. * Creates a Space Warp render target
  21. * @param motionVectorTexture WebGLTexture provided by WebGLSubImage
  22. * @param depthStencilTexture WebGLTexture provided by WebGLSubImage
  23. * @param scene scene used with the render target
  24. * @param size the size of the render target (used for each view)
  25. */
  26. constructor(motionVectorTexture: WebGLTexture, depthStencilTexture: WebGLTexture, scene?: Scene, size?: number | {
  27. width: number;
  28. height: number;
  29. } | {
  30. ratio: number;
  31. });
  32. render(useCameraPostProcess?: boolean, dumpForDebug?: boolean): void;
  33. /**
  34. * @internal
  35. */
  36. _bindFrameBuffer(): void;
  37. /**
  38. * Gets the number of views the corresponding to the texture (eg. a SpaceWarpRenderTarget will have > 1)
  39. * @returns the view count
  40. */
  41. getViewCount(): number;
  42. dispose(): void;
  43. }
  44. /**
  45. * WebXR Space Warp Render Target Texture Provider
  46. */
  47. export declare class WebXRSpaceWarpRenderTargetTextureProvider implements IWebXRRenderTargetTextureProvider {
  48. protected readonly _scene: Scene;
  49. protected readonly _xrSessionManager: WebXRSessionManager;
  50. protected readonly _xrWebGLBinding: XRWebGLBinding;
  51. protected _lastSubImages: Map<XRView, XRWebGLSubImage>;
  52. protected _renderTargetTextures: Map<XREye, RenderTargetTexture>;
  53. protected _framebufferDimensions: Nullable<{
  54. framebufferWidth: number;
  55. framebufferHeight: number;
  56. }>;
  57. protected _engine: Engine;
  58. constructor(_scene: Scene, _xrSessionManager: WebXRSessionManager, _xrWebGLBinding: XRWebGLBinding);
  59. private _getSubImageForView;
  60. protected _setViewportForSubImage(viewport: Viewport, subImage: XRWebGLSubImage): void;
  61. protected _createRenderTargetTexture(width: number, height: number, framebuffer: Nullable<WebGLFramebuffer>, motionVectorTexture: WebGLTexture, depthStencilTexture: WebGLTexture): RenderTargetTexture;
  62. protected _getRenderTargetForSubImage(subImage: XRWebGLSubImage, view: XRView): RenderTargetTexture;
  63. trySetViewportForView(viewport: Viewport, view: XRView): boolean;
  64. /**
  65. * Access the motion vector (which will turn on Space Warp)
  66. * @param view the view to access the motion vector texture for
  67. */
  68. accessMotionVector(view: XRView): void;
  69. getRenderTargetTextureForEye(_eye: XREye): Nullable<RenderTargetTexture>;
  70. getRenderTargetTextureForView(view: XRView): Nullable<RenderTargetTexture>;
  71. dispose(): void;
  72. }
  73. /**
  74. * the WebXR Space Warp feature.
  75. */
  76. export declare class WebXRSpaceWarp extends WebXRAbstractFeature {
  77. /**
  78. * The module's name
  79. */
  80. static readonly Name = "xr-space-warp";
  81. /**
  82. * The (Babylon) version of this module.
  83. * This is an integer representing the implementation version.
  84. * This number does not correspond to the WebXR specs version
  85. */
  86. static readonly Version = 1;
  87. /**
  88. * The space warp provider
  89. */
  90. spaceWarpRTTProvider: Nullable<WebXRSpaceWarpRenderTargetTextureProvider>;
  91. private _glContext;
  92. private _xrWebGLBinding;
  93. private _renderTargetTexture;
  94. private _onAfterRenderObserver;
  95. /**
  96. * constructor for the space warp feature
  97. * @param _xrSessionManager the xr session manager for this feature
  98. */
  99. constructor(_xrSessionManager: WebXRSessionManager);
  100. /**
  101. * Attach this feature.
  102. * Will usually be called by the features manager.
  103. *
  104. * @returns true if successful.
  105. */
  106. attach(): boolean;
  107. detach(): boolean;
  108. private _onAfterRender;
  109. dependsOn: string[];
  110. isCompatible(): boolean;
  111. dispose(): void;
  112. protected _onXRFrame(_xrFrame: XRFrame): void;
  113. }