You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
See also #2743 which is for particle nodes and #2784 for reflection probes.
Describe the project you are working on
The Godot editor 🙂
Describe the problem or limitation you are having in your project
Lights currently don't feature a built-in LOD system.
When you use many light nodes, these can have a significant performance impact despite them being barely visible when they're in the distance. This is especially true with small lights used for details, since these occupy a smaller portion of the screen.
While Godot 4.0's clustered forward renderer makes it possible to use hundreds of shadow-less lights while keeping good performance, lights with shadows are still relatively expensive in comparison. Also, on low-end/mobile hardware, the mobile renderer can't display hundreds of shadow-less lights with good performance.
For the record, the Decal node (new in 4.0) features a built-in LOD system with configurable distance and fade distance.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
To make the transition smoother, it's often useful to be able to disable shadows first, then disable the light entirely once the camera gets significantly further away. This is why I propose having separate properties to control the shadow fading and the light fading itself.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Add the following properties to OmniLight3D and SpotLight3D:
Shadow Distance: The distance at which the shadow starts fading away.
Shadow Fade: The distance over which the shadow should be faded.
Once the shadow is fully faded, it is disabled, resulting in increased performance.
Since the per-light Shadow Color property is no longer available in master for performance reasons, we either need to reimplement a limited form of it (allowing opacity changes only) or use a different way of fading shadows in the distance (dithering?).
Light Distance: The distance at which the light starts fading away.
Light Fade: The distance over which the light should be faded.
Once the light is fully faded, it is disabled, resulting in increased performance.
If this enhancement will not be used often, can it be worked around with a few lines of script?
Kind of. It's possible to play with shadow color and light energy in a script. (Shadow color is only adjustable in 3.x, as it was removed in master for performance reasons.)
The Godot LOD add-on I wrote provides such a feature.
Is there a reason why this should be core and not an add-on in the asset library?
Implementing this LOD system in C++ would lead to better performance when using large amounts of lights (hundreds or more).
The text was updated successfully, but these errors were encountered:
See also #2743 which is for particle nodes and #2784 for reflection probes.
Describe the project you are working on
The Godot editor 🙂
Describe the problem or limitation you are having in your project
Lights currently don't feature a built-in LOD system.
When you use many light nodes, these can have a significant performance impact despite them being barely visible when they're in the distance. This is especially true with small lights used for details, since these occupy a smaller portion of the screen.
While Godot 4.0's clustered forward renderer makes it possible to use hundreds of shadow-less lights while keeping good performance, lights with shadows are still relatively expensive in comparison. Also, on low-end/mobile hardware, the mobile renderer can't display hundreds of shadow-less lights with good performance.
For the record, the Decal node (new in 4.0) features a built-in LOD system with configurable distance and fade distance.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
To make the transition smoother, it's often useful to be able to disable shadows first, then disable the light entirely once the camera gets significantly further away. This is why I propose having separate properties to control the shadow fading and the light fading itself.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Add the following properties to OmniLight3D and SpotLight3D:
master
for performance reasons, we either need to reimplement a limited form of it (allowing opacity changes only) or use a different way of fading shadows in the distance (dithering?).If this enhancement will not be used often, can it be worked around with a few lines of script?
Kind of. It's possible to play with shadow color and light energy in a script. (Shadow color is only adjustable in
3.x
, as it was removed inmaster
for performance reasons.)The Godot LOD add-on I wrote provides such a feature.
Is there a reason why this should be core and not an add-on in the asset library?
Implementing this LOD system in C++ would lead to better performance when using large amounts of lights (hundreds or more).
The text was updated successfully, but these errors were encountered: