Skip to content

Commit 54e3591

Browse files
authored
fix issues with xr rendering (#31198)
1 parent 8146d0a commit 54e3591

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

src/renderers/common/Renderer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1260,6 +1260,7 @@ class Renderer {
12601260
frameBufferTarget.scissorTest = this._scissorTest;
12611261
frameBufferTarget.multiview = outputRenderTarget !== null ? outputRenderTarget.multiview : false;
12621262
frameBufferTarget.resolveDepthBuffer = outputRenderTarget !== null ? outputRenderTarget.resolveDepthBuffer : true;
1263+
frameBufferTarget.autoAllocateDepthBuffer = outputRenderTarget !== null ? outputRenderTarget.autoAllocateDepthBuffer : false;
12631264

12641265
return frameBufferTarget;
12651266

src/renderers/common/XRManager.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,7 @@ class XRManager extends EventDispatcher {
10211021
session.updateRenderState( { baseLayer: glBaseLayer } );
10221022

10231023
renderer.setPixelRatio( 1 );
1024-
renderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );
1024+
renderer._setXRLayerSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight );
10251025

10261026
this._xrRenderTarget = new XRRenderTarget(
10271027
glBaseLayer.framebufferWidth,

src/renderers/webgl-fallback/WebGLBackend.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ class WebGLBackend extends Backend {
595595

596596
}
597597

598-
} else if ( resolveDepthBuffer === false ) {
598+
} else if ( resolveDepthBuffer === false && renderTargetContextData.framebuffers ) {
599599

600600
const fb = renderTargetContextData.framebuffers[ renderContext.getCacheKey() ];
601601
state.bindFramebuffer( gl.DRAW_FRAMEBUFFER, fb );
@@ -2075,7 +2075,7 @@ class WebGLBackend extends Backend {
20752075

20762076
} else {
20772077

2078-
if ( hasExternalTextures && useMultisampledRTT ) {
2078+
if ( useMultisampledRTT ) {
20792079

20802080
multisampledRTTExt.framebufferTexture2DMultisampleEXT( gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, textureData.textureGPU, 0, samples );
20812081

@@ -2093,21 +2093,26 @@ class WebGLBackend extends Backend {
20932093

20942094
}
20952095

2096-
if ( renderTarget.isXRRenderTarget && renderTarget.autoAllocateDepthBuffer === true ) {
2096+
const depthStyle = stencilBuffer ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;
2097+
2098+
if ( renderTarget.autoAllocateDepthBuffer === true ) {
20972099

20982100
const renderbuffer = gl.createRenderbuffer();
20992101
this.textureUtils.setupRenderBufferStorage( renderbuffer, descriptor, 0, useMultisampledRTT );
21002102
renderTargetContextData.xrDepthRenderbuffer = renderbuffer;
21012103
depthInvalidationArray.push( stencilBuffer ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT );
21022104

2105+
gl.bindRenderbuffer( gl.RENDERBUFFER, renderbuffer );
2106+
gl.framebufferRenderbuffer( gl.FRAMEBUFFER, depthStyle, gl.RENDERBUFFER, renderbuffer );
2107+
2108+
21032109
} else {
21042110

21052111
if ( descriptor.depthTexture !== null ) {
21062112

21072113
depthInvalidationArray.push( stencilBuffer ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT );
21082114

21092115
const textureData = this.get( descriptor.depthTexture );
2110-
const depthStyle = stencilBuffer ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;
21112116
textureData.renderTarget = descriptor.renderTarget;
21122117
textureData.cacheKey = cacheKey; // required for copyTextureToTexture()
21132118

@@ -2166,7 +2171,7 @@ class WebGLBackend extends Backend {
21662171

21672172
// rebind external XR textures
21682173

2169-
if ( ( isXRRenderTarget && hasExternalTextures ) || renderTarget.multiview ) {
2174+
if ( isXRRenderTarget || useMultisampledRTT || renderTarget.multiview ) {
21702175

21712176
state.bindFramebuffer( gl.FRAMEBUFFER, fb );
21722177

0 commit comments

Comments
 (0)