mirror of
https://github.com/godotengine/godot.git
synced 2024-11-23 04:33:29 +00:00
Request redraw in OpenGL3 and mobile renderers when TIME used in shader
This commit is contained in:
parent
6d9546f16c
commit
a1c3591461
@ -1973,6 +1973,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;
|
||||
@ -2003,6 +2005,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) {
|
||||
@ -2227,6 +2234,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) {
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user