Merge pull request #53972 from zedutch/fix-shader-time-update

Fix shaders using `TIME` not continuously updating
This commit is contained in:
Rémi Verschelde 2021-10-19 16:37:55 +02:00 committed by GitHub
commit 244faf5588
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -328,6 +328,8 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
push_constant.uv_offset = 0;
}
bool should_request_redraw = false;
for (uint32_t i = p_from_element; i < p_to_element; i++) {
const GeometryInstanceSurfaceDataCache *surf = p_params->elements[i];
const RenderElementInfo &element_info = p_params->element_info[i];
@ -365,6 +367,11 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
continue;
}
//request a redraw if one of the shaders uses TIME
if (shader->uses_time) {
should_request_redraw = true;
}
//find cull variant
SceneShaderForwardClustered::ShaderData::CullVariant cull_variant;
@ -500,6 +507,11 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
RD::get_singleton()->draw_list_draw(draw_list, index_array_rd.is_valid(), instance_count);
i += element_info.repeat - 1; //skip equal elements
}
// Make the actual redraw request
if (should_request_redraw) {
RenderingServerDefault::redraw_request();
}
}
void RenderForwardClustered::_render_list(RenderingDevice::DrawListID p_draw_list, RenderingDevice::FramebufferFormatID p_framebuffer_Format, RenderListParameters *p_params, uint32_t p_from_element, uint32_t p_to_element) {