|
@@ -1993,6 +1993,8 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ bool should_request_redraw = false;
|
|
|
+
|
|
|
for (uint32_t i = p_from_element; i < p_to_element; i++) {
|
|
|
const GeometryInstanceSurface *surf = p_params->elements[i];
|
|
|
GeometryInstanceGLES3 *inst = surf->owner;
|
|
@@ -2023,6 +2025,11 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ //request a redraw if one of the shaders uses TIME
|
|
|
+ if (shader->uses_time) {
|
|
|
+ should_request_redraw = true;
|
|
|
+ }
|
|
|
+
|
|
|
if constexpr (p_pass_mode == PASS_MODE_COLOR_TRANSPARENT) {
|
|
|
if (scene_state.current_depth_test != shader->depth_test) {
|
|
|
if (shader->depth_test == GLES3::SceneShaderData::DEPTH_TEST_DISABLED) {
|
|
@@ -2247,6 +2254,11 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
|
|
|
glDisableVertexAttribArray(15);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // Make the actual redraw request
|
|
|
+ if (should_request_redraw) {
|
|
|
+ RenderingServerDefault::redraw_request();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void RasterizerSceneGLES3::render_material(const Transform3D &p_cam_transform, const Projection &p_cam_projection, bool p_cam_orthogonal, const PagedArray<RenderGeometryInstance *> &p_instances, RID p_framebuffer, const Rect2i &p_region) {
|