@babylonjs/core
Version:
Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.
54 lines • 2.14 kB
JavaScript
import { WebXRCompositionLayerRenderTargetTextureProvider, WebXRCompositionLayerWrapper } from "./WebXRCompositionLayer.js";
/**
* Wraps xr projection layers.
* @internal
*/
export class WebXRProjectionLayerWrapper extends WebXRCompositionLayerWrapper {
constructor(layer, isMultiview, xrGLBinding) {
super(() => layer.textureWidth, () => layer.textureHeight, layer, "XRProjectionLayer", isMultiview, (sessionManager) => new WebXRProjectionLayerRenderTargetTextureProvider(sessionManager, xrGLBinding, this));
this.layer = layer;
}
}
/**
* Provides render target textures and other important rendering information for a given XRProjectionLayer.
* @internal
*/
class WebXRProjectionLayerRenderTargetTextureProvider extends WebXRCompositionLayerRenderTargetTextureProvider {
constructor(_xrSessionManager, _xrWebGLBinding, layerWrapper) {
super(_xrSessionManager, _xrWebGLBinding, layerWrapper);
this.layerWrapper = layerWrapper;
this._projectionLayer = layerWrapper.layer;
}
_getSubImageForView(view) {
return this._xrWebGLBinding.getViewSubImage(this._projectionLayer, view);
}
getRenderTargetTextureForView(view) {
return this._getRenderTargetForSubImage(this._getSubImageForView(view), view.eye);
}
getRenderTargetTextureForEye(eye) {
const lastSubImage = this._lastSubImages.get(eye);
if (lastSubImage) {
return this._getRenderTargetForSubImage(lastSubImage, eye);
}
return null;
}
trySetViewportForView(viewport, view) {
const subImage = this._lastSubImages.get(view.eye) || this._getSubImageForView(view);
if (subImage) {
this._setViewportForSubImage(viewport, subImage);
return true;
}
return false;
}
}
/**
* @internal
*/
export const DefaultXRProjectionLayerInit = {
textureType: "texture",
colorFormat: 0x1908 /* WebGLRenderingContext.RGBA */,
depthFormat: 0x88f0 /* WebGLRenderingContext.DEPTH24_STENCIL8 */,
scaleFactor: 1.0,
clearOnAccess: false,
};
//# sourceMappingURL=WebXRProjectionLayer.js.map