Skip to content

Conversation

@takahirox
Copy link
Collaborator

@takahirox takahirox commented Feb 24, 2019

webvr examples with WebXR API have been broken in dev branch.

Renderer viewport is resized in WebGLRenderer.render() when rendering object with ArrayCamera in VR mode.

https://github.com/mrdoob/three.js/blob/r101/src/renderers/WebGLRenderer.js#L1306-L1321

But viewport size isn't reset when user leaves VR mode.

In r101 .setRenderTarget() resetting viewport inside was called in each .render() call then viewport was automatically reset.

https://github.com/mrdoob/three.js/blob/r101/src/renderers/WebGLRenderer.js#L1106

But with #15571 .setRenderTarget() is no longer called in .render() (unless you give deprecated third argument renderTarget). So we need to reset viewport size when session ends in WebXRManager like WebVRManager does.

Probably adding renderer.setRenderTarget( renderer.getRenderTarget() ); in onSessionEnd() is the easiest solution. Let me know if there is any better ideas.

Update: Plus, I think we need to re-bind framebuffer from session.baseLayer.framebuffer to regular one on session end so calling .setRenderTarget() seems a good solution.

@Mugen87
Copy link
Collaborator

Mugen87 commented Feb 25, 2019

Good find! 👍

@takahirox takahirox mentioned this pull request Feb 25, 2019
@mrdoob
Copy link
Owner

mrdoob commented Feb 28, 2019

Sounds hacky. But we can improve it later.

@mrdoob mrdoob added this to the r102 milestone Feb 28, 2019
@mrdoob mrdoob merged commit e90eaf6 into mrdoob:dev Feb 28, 2019
@mrdoob
Copy link
Owner

mrdoob commented Feb 28, 2019

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants