webXRRenderTargetTextureProvider.d.ts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture";
  2. import type { Viewport } from "../Maths/math.viewport";
  3. import type { IDisposable, Scene } from "../scene";
  4. import type { Nullable } from "../types";
  5. import type { WebXRLayerWrapper } from "./webXRLayerWrapper";
  6. /**
  7. * An interface for objects that provide render target textures for XR rendering.
  8. */
  9. export interface IWebXRRenderTargetTextureProvider extends IDisposable {
  10. /**
  11. * Attempts to set the framebuffer-size-normalized viewport to be rendered this frame for this view.
  12. * In the event of a failure, the supplied viewport is not updated.
  13. * @param viewport the viewport to which the view will be rendered
  14. * @param view the view for which to set the viewport
  15. * @returns whether the operation was successful
  16. */
  17. trySetViewportForView(viewport: Viewport, view: XRView): boolean;
  18. /**
  19. * Gets the correct render target texture to be rendered this frame for this eye
  20. * @param eye the eye for which to get the render target
  21. * @returns the render target for the specified eye or null if not available
  22. */
  23. getRenderTargetTextureForEye(eye: XREye): Nullable<RenderTargetTexture>;
  24. /**
  25. * Gets the correct render target texture to be rendered this frame for this view
  26. * @param view the view for which to get the render target
  27. * @returns the render target for the specified view or null if not available
  28. */
  29. getRenderTargetTextureForView(view: XRView): Nullable<RenderTargetTexture>;
  30. }
  31. /**
  32. * Provides render target textures and other important rendering information for a given XRLayer.
  33. * @internal
  34. */
  35. export declare abstract class WebXRLayerRenderTargetTextureProvider implements IWebXRRenderTargetTextureProvider {
  36. private readonly _scene;
  37. readonly layerWrapper: WebXRLayerWrapper;
  38. abstract trySetViewportForView(viewport: Viewport, view: XRView): boolean;
  39. abstract getRenderTargetTextureForEye(eye: XREye): Nullable<RenderTargetTexture>;
  40. abstract getRenderTargetTextureForView(view: XRView): Nullable<RenderTargetTexture>;
  41. protected _renderTargetTextures: RenderTargetTexture[];
  42. protected _framebufferDimensions: Nullable<{
  43. framebufferWidth: number;
  44. framebufferHeight: number;
  45. }>;
  46. private _engine;
  47. constructor(_scene: Scene, layerWrapper: WebXRLayerWrapper);
  48. private _createInternalTexture;
  49. protected _createRenderTargetTexture(width: number, height: number, framebuffer: Nullable<WebGLFramebuffer>, colorTexture?: WebGLTexture, depthStencilTexture?: WebGLTexture, multiview?: boolean): RenderTargetTexture;
  50. protected _destroyRenderTargetTexture(renderTargetTexture: RenderTargetTexture): void;
  51. getFramebufferDimensions(): Nullable<{
  52. framebufferWidth: number;
  53. framebufferHeight: number;
  54. }>;
  55. dispose(): void;
  56. }