diff --git a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp index ec025776d0..5eb1729dad 100644 --- a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp +++ b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp @@ -1523,6 +1523,8 @@ void RenderForwardClustered::_pre_opaque_render(RenderDataRD *p_render_data, boo rb_data = rb->get_custom_data(RB_SCOPE_FORWARD_CLUSTERED); } + RENDER_TIMESTAMP("Setup Shadows"); + if (rb.is_valid() && p_use_gi && rb->has_custom_data(RB_SCOPE_SDFGI)) { Ref sdfgi = rb->get_custom_data(RB_SCOPE_SDFGI); sdfgi->store_probes(); @@ -1552,10 +1554,12 @@ void RenderForwardClustered::_pre_opaque_render(RenderDataRD *p_render_data, boo } } - RENDER_TIMESTAMP("Render OmniLight Shadows"); - // Cube shadows are rendered in their own way. - for (const int &index : p_render_data->cube_shadows) { - _render_shadow_pass(p_render_data->render_shadows[index].light, p_render_data->shadow_atlas, p_render_data->render_shadows[index].pass, p_render_data->render_shadows[index].instances, lod_distance_multiplier, p_render_data->scene_data->screen_mesh_lod_threshold, true, true, true, p_render_data->render_info, viewport_size, p_render_data->scene_data->cam_transform); + if (p_render_data->cube_shadows.size()) { + RENDER_TIMESTAMP("Render OmniLight Shadows"); + // Cube shadows are rendered in their own way. + for (const int &index : p_render_data->cube_shadows) { + _render_shadow_pass(p_render_data->render_shadows[index].light, p_render_data->shadow_atlas, p_render_data->render_shadows[index].pass, p_render_data->render_shadows[index].instances, lod_distance_multiplier, p_render_data->scene_data->screen_mesh_lod_threshold, true, true, true, p_render_data->render_info, viewport_size, p_render_data->scene_data->cam_transform); + } } if (p_render_data->directional_shadows.size()) { @@ -1572,9 +1576,9 @@ void RenderForwardClustered::_pre_opaque_render(RenderDataRD *p_render_data, boo bool render_gi = rb.is_valid() && p_use_gi; if (render_shadows && render_gi) { - RENDER_TIMESTAMP("Render GI + Render Shadows (Parallel)"); + RENDER_TIMESTAMP("Render GI + Render Directional/SpotLight Shadows (Parallel)"); } else if (render_shadows) { - RENDER_TIMESTAMP("Render Shadows"); + RENDER_TIMESTAMP("Render Directional/SpotLight Shadows"); } else if (render_gi) { RENDER_TIMESTAMP("Render GI"); } 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 ca42096fdd..b3eef6948b 100644 --- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp +++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp @@ -767,6 +767,8 @@ void RenderForwardMobile::_setup_lightmaps(const RenderDataRD *p_render_data, co void RenderForwardMobile::_pre_opaque_render(RenderDataRD *p_render_data) { RendererRD::LightStorage *light_storage = RendererRD::LightStorage::get_singleton(); + RENDER_TIMESTAMP("Setup Shadows"); + p_render_data->cube_shadows.clear(); p_render_data->shadows.clear(); p_render_data->directional_shadows.clear();