summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_viewport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'servers/rendering/renderer_viewport.cpp')
-rw-r--r--servers/rendering/renderer_viewport.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/servers/rendering/renderer_viewport.cpp b/servers/rendering/renderer_viewport.cpp
index 7a829826d2..5880bf3951 100644
--- a/servers/rendering/renderer_viewport.cpp
+++ b/servers/rendering/renderer_viewport.cpp
@@ -1163,6 +1163,17 @@ void RendererViewport::viewport_set_msaa_3d(RID p_viewport, RS::ViewportMSAA p_m
_configure_3d_render_buffers(viewport);
}
+void RendererViewport::viewport_set_use_hdr_2d(RID p_viewport, bool p_use_hdr_2d) {
+ Viewport *viewport = viewport_owner.get_or_null(p_viewport);
+ ERR_FAIL_COND(!viewport);
+
+ if (viewport->use_hdr_2d == p_use_hdr_2d) {
+ return;
+ }
+ viewport->use_hdr_2d = p_use_hdr_2d;
+ RSG::texture_storage->render_target_set_use_hdr(viewport->render_target, p_use_hdr_2d);
+}
+
void RendererViewport::viewport_set_screen_space_aa(RID p_viewport, RS::ViewportScreenSpaceAA p_mode) {
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
ERR_FAIL_COND(!viewport);
@@ -1183,6 +1194,7 @@ void RendererViewport::viewport_set_use_taa(RID p_viewport, bool p_use_taa) {
return;
}
viewport->use_taa = p_use_taa;
+ num_viewports_with_motion_vectors += p_use_taa ? 1 : -1;
_configure_3d_render_buffers(viewport);
}
@@ -1367,6 +1379,10 @@ bool RendererViewport::free(RID p_rid) {
RendererSceneOcclusionCull::get_singleton()->remove_buffer(p_rid);
}
+ if (viewport->use_taa) {
+ num_viewports_with_motion_vectors--;
+ }
+
viewport_owner.free(p_rid);
return true;
@@ -1422,6 +1438,10 @@ int RendererViewport::get_total_draw_calls_used() const {
return total_draw_calls_used;
}
+int RendererViewport::get_num_viewports_with_motion_vectors() const {
+ return num_viewports_with_motion_vectors;
+}
+
RendererViewport::RendererViewport() {
occlusion_rays_per_thread = GLOBAL_GET("rendering/occlusion_culling/occlusion_rays_per_thread");
}