Add Setup Shadows render timestamp for the visual profiler

- Rename shadow timestamp to clarify it's for directional and spot shadows.
- Fix Render OmniLight Shadows timestamp being visible even when no
  omnilight shadows are being rendered.
This commit is contained in:
Hugo Locurcio
2026-05-04 19:12:24 +02:00
parent 16bb065ac3
commit 376bea65e0
2 changed files with 12 additions and 6 deletions
@@ -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<RendererRD::GI::SDFGI> 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");
}
@@ -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();