Merge pull request #115799 from BastiaanOlij/add_view_count_to_viewport

Add view count support to Viewport
This commit is contained in:
Thaddeus Crews 2026-02-26 08:15:13 -06:00
commit 861d74c09d
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
13 changed files with 189 additions and 69 deletions

View file

@ -1283,6 +1283,13 @@ void Window::_update_window_size() {
void Window::_update_viewport_size() {
//update the viewport part
#ifndef XR_DISABLED
// If `use_xr` set, we should skip this logic.
if (is_using_xr()) {
return;
}
#endif // XR_DISABLED
Size2i final_size;
Size2 final_size_override;
Rect2i attach_to_screen_rect(Point2i(), size);
@ -1400,7 +1407,7 @@ void Window::_update_viewport_size() {
}
bool allocate = is_inside_tree() && visible && (window_id != DisplayServer::INVALID_WINDOW_ID || embedder != nullptr);
_set_size(final_size, final_size_override, allocate);
_set_size(final_size, 1, final_size_override, allocate);
if (window_id != DisplayServer::INVALID_WINDOW_ID) {
RenderingServer::get_singleton()->viewport_attach_to_screen(get_viewport_rid(), attach_to_screen_rect, window_id);
@ -1415,7 +1422,7 @@ void Window::_update_viewport_size() {
Viewport::set_oversampling_override(scale);
Size2 s = Size2(final_size.width * scale, final_size.height * scale).ceil();
RS::get_singleton()->viewport_set_global_canvas_transform(get_viewport_rid(), global_canvas_transform * scale * content_scale_factor);
RS::get_singleton()->viewport_set_size(get_viewport_rid(), s.width, s.height);
RS::get_singleton()->viewport_set_size(get_viewport_rid(), s.width, s.height, 1);
embedder->_sub_window_update(this);
}
}