Unexpected performance hit on "cull directionallight3D"

Godot Version

4.6

Question

What does “cull directionallight3D” mean on the visual profler and how do i fix it being so expensive when i have a bunch of character meshes on screen?

forward+ manages 60fps when not recording but my ryzen 5500U test platform hits 90% gpu usage of a vega 6 at 720p. I’d expect to see triangle count, toon shader or 1200 skeleton bones to cause a bottleneck but the visual profiler only points to “Cull DirectionalLight3D”

Did i miss something stupid when setting up my scene? I’m pretty sure i shouldn’t be capping out the hardware with just 12 textured boxes and 24 rigged characters.

I did a second run of testing with more controlled variables and it seems my 190k-triangle meshes are triggering some work on an unknown part of the renderer that does not scale down with LOD levels.
For all of the following screenshots i had the vega 6 iGPU pinned at 700MHz core, 800MHz VRAM, VSync off, viewport at 1280x720.

  • 63 instances of humanoid skinned 190K triangle mesh, with LOD bias at 0.001:
  • 63 instances of same mesh, but decimated down to 19K triangles, LOD bias at 128:

    As you can see here, the 19K triangle version is displaying way more triangles on the viewport and still renders at a higher framerate! What’s going on here, why is a 1k-tris LOD of a 190k mesh heavier than a full-detail LOD of a 19k-tris mesh?