Skip to content

Commit

Permalink
Merge pull request #56072 from BastiaanOlij/fix_viewport_size_arvr
Browse files Browse the repository at this point in the history
Fix size issue for ARVR managed viewport
  • Loading branch information
akien-mga authored Dec 19, 2021
2 parents 7a6b48b + 4e4de34 commit 4f58ec3
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions servers/visual/visual_server_viewport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,17 @@ void VisualServerViewport::draw_viewports() {

ERR_CONTINUE(!vp->render_target.is_valid());

if (vp->use_arvr) {
// In ARVR mode it is our interface that controls our size
if (arvr_interface.is_valid()) {
// override our size, make sure it matches our required size
vp->size = arvr_interface->get_render_targetsize();
} else {
// reset this, we can't render the output without a valid interface (this will likely be so when we're in the editor)
vp->size = Vector2(0, 0);
}
}

bool visible = vp->viewport_to_screen_rect != Rect2() || vp->update_mode == VS::VIEWPORT_UPDATE_ALWAYS || vp->update_mode == VS::VIEWPORT_UPDATE_ONCE || (vp->update_mode == VS::VIEWPORT_UPDATE_WHEN_VISIBLE && VSG::storage->render_target_was_used(vp->render_target));
visible = visible && vp->size.x > 1 && vp->size.y > 1;

Expand All @@ -298,8 +309,6 @@ void VisualServerViewport::draw_viewports() {
VSG::storage->render_target_clear_used(vp->render_target);

if (vp->use_arvr && arvr_interface.is_valid()) {
// override our size, make sure it matches our required size
vp->size = arvr_interface->get_render_targetsize();
VSG::storage->render_target_set_size(vp->render_target, vp->size.x, vp->size.y);

// render mono or left eye first
Expand Down

0 comments on commit 4f58ec3

Please sign in to comment.