It’s possible to use the render buffer from a render target in another render call. I have been doing this for using gbuffer as a depth-prepass.
You will have to get the depth buffer from the target, then before the render call attach it to the framebuffer.
To get the depth buffer:
const renderBufferProps = renderer.properties.get(gbuffer)
depthRenderBuffer = renderBufferProps.__webglDepthRenderbuffer || renderBufferProps.__webglDepthbuffer
Then before the renderer.render call and after renderer.setRenderTarget
const _gl = renderer.getContext();
_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, depthRenderBuffer );
After renderer.render call:
const _gl = renderer.getContext();
_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, null );
I am not sure about MRT targets though if they have a different private variable. You can check the code for WebGLTextures.js for this.