From 64dfe9428d5103e5d5b8df4e74fcbcb7f3fd3921 Mon Sep 17 00:00:00 2001 From: Rik Cabanier Date: Wed, 14 Feb 2024 01:38:36 +0000 Subject: [PATCH] reduce extra renderpass with depth sensing --- src/renderers/WebGLRenderer.js | 2 ++ src/renderers/webxr/WebXRDepthSensing.js | 6 +++--- src/renderers/webxr/WebXRManager.js | 8 ++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index bc0496ee31db12..a9225d9a226fc4 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1178,6 +1178,8 @@ class WebGLRenderer { renderListStack.push( currentRenderList ); + if ( _this.xr.getDepthSensingMesh() ) projectObject( _this.xr.getDepthSensingMesh(), camera, -Infinity, _this.sortObjects ); + projectObject( scene, camera, 0, _this.sortObjects ); currentRenderList.finish(); diff --git a/src/renderers/webxr/WebXRDepthSensing.js b/src/renderers/webxr/WebXRDepthSensing.js index 6deb02eed5fec4..0a109c27b7b5e3 100644 --- a/src/renderers/webxr/WebXRDepthSensing.js +++ b/src/renderers/webxr/WebXRDepthSensing.js @@ -65,7 +65,7 @@ class WebXRDepthSensing { } - render( renderer, cameraXR ) { + getMesh( cameraXR ) { if ( this.texture !== null ) { @@ -87,10 +87,10 @@ class WebXRDepthSensing { } - renderer.render( this.mesh, cameraXR ); - } + return this.mesh; + } reset() { diff --git a/src/renderers/webxr/WebXRManager.js b/src/renderers/webxr/WebXRManager.js index fa9a5738c68302..2d5ed91a7f75d7 100644 --- a/src/renderers/webxr/WebXRManager.js +++ b/src/renderers/webxr/WebXRManager.js @@ -666,6 +666,12 @@ class WebXRManager extends EventDispatcher { }; + this.getDepthSensingMesh = function () { + + return depthSensing.getMesh( cameraXR ); + + }; + // Animation Loop let onAnimationFrameCallback = null; @@ -791,8 +797,6 @@ class WebXRManager extends EventDispatcher { } - depthSensing.render( renderer, cameraXR ); - if ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame ); if ( frame.detectedPlanes ) {