diff --git a/examples/screenshots/webgpu_xr_cubes.jpg b/examples/screenshots/webgpu_xr_cubes.jpg index fae83571b60f89..214028953b5d6d 100644 Binary files a/examples/screenshots/webgpu_xr_cubes.jpg and b/examples/screenshots/webgpu_xr_cubes.jpg differ diff --git a/examples/webgpu_xr_cubes.html b/examples/webgpu_xr_cubes.html index 3f19c4fad9a42d..eb83322a6bd988 100644 --- a/examples/webgpu_xr_cubes.html +++ b/examples/webgpu_xr_cubes.html @@ -96,7 +96,7 @@ raycaster = new THREE.Raycaster(); - renderer = new THREE.WebGPURenderer( { forceWebGL: true } ); + renderer = new THREE.WebGPURenderer( { antialias: true, forceWebGL: true } ); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setAnimationLoop( animate ); diff --git a/src/renderers/common/XRManager.js b/src/renderers/common/XRManager.js index a75efb24e2c888..7dc379d39ee939 100644 --- a/src/renderers/common/XRManager.js +++ b/src/renderers/common/XRManager.js @@ -632,7 +632,8 @@ class XRManager extends EventDispatcher { type: UnsignedByteType, colorSpace: renderer.outputColorSpace, depthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ), - stencilBuffer: attributes.stencil + stencilBuffer: attributes.stencil, + samples: attributes.antialias ? 4 : 0 } ); this._xrRenderTarget.hasExternalTextures = true; diff --git a/src/renderers/webgl-fallback/WebGLBackend.js b/src/renderers/webgl-fallback/WebGLBackend.js index 389be357ea0f95..65aae66665697c 100644 --- a/src/renderers/webgl-fallback/WebGLBackend.js +++ b/src/renderers/webgl-fallback/WebGLBackend.js @@ -334,11 +334,15 @@ class WebGLBackend extends Backend { */ setXRRenderTargetTextures( renderTarget, colorTexture, depthTexture = null ) { - this.set( renderTarget.texture, { textureGPU: colorTexture } ); + const gl = this.gl; + + this.set( renderTarget.texture, { textureGPU: colorTexture, glInternalFormat: gl.RGBA8 } ); // see #24698 why RGBA8 and not SRGB8_ALPHA8 is used if ( depthTexture !== null ) { - this.set( renderTarget.depthTexture, { textureGPU: depthTexture } ); + const glInternalFormat = renderTarget.stencilBuffer ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24; + + this.set( renderTarget.depthTexture, { textureGPU: depthTexture, glInternalFormat: glInternalFormat } ); renderTarget.autoAllocateDepthBuffer = false;