summaryrefslogtreecommitdiff
path: root/servers
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <remi@verschelde.fr>2022-11-09 08:58:06 +0100
committerGitHub <noreply@github.com>2022-11-09 08:58:06 +0100
commitf4c354630aab9a2e96f46ded36d30c9bae2251b8 (patch)
tree11a00f6a4adfbedb6d4cd2ee2ff5150e70b04707 /servers
parent6bb2ea281eb657ec425670ed09e8192f2338fa0e (diff)
parenta1c3591461b7eab05fde11d7128ec34b87e62b1b (diff)
Merge pull request #68440 from clayjohn/redraw-TIME
Request redraw in OpenGL3 and mobile renderers when TIME used in shader
Diffstat (limited to 'servers')
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
index f76d016ae7..898521ca4d 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
@@ -2004,6 +2004,7 @@ void RenderForwardMobile::_render_list_template(RenderingDevice::DrawListID p_dr
RID prev_index_array_rd;
RID prev_pipeline_rd;
RID prev_xforms_uniform_set;
+ bool should_request_redraw = false;
bool shadow_pass = (p_params->pass_mode == PASS_MODE_SHADOW) || (p_params->pass_mode == PASS_MODE_SHADOW_DP);
@@ -2090,6 +2091,11 @@ void RenderForwardMobile::_render_list_template(RenderingDevice::DrawListID p_dr
continue;
}
+ //request a redraw if one of the shaders uses TIME
+ if (shader->uses_time) {
+ should_request_redraw = true;
+ }
+
//find cull variant
SceneShaderForwardMobile::ShaderData::CullVariant cull_variant;
@@ -2191,6 +2197,11 @@ void RenderForwardMobile::_render_list_template(RenderingDevice::DrawListID p_dr
RD::get_singleton()->draw_list_draw(draw_list, index_array_rd.is_valid(), instance_count);
}
+
+ // Make the actual redraw request
+ if (should_request_redraw) {
+ RenderingServerDefault::redraw_request();
+ }
}
/* Geometry instance */