godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.46k stars 21.27k forks source link

Vulkan: LightmapGI always bakes direct light shadows (for fully baked lights), even for lights that have shadows disabled #56611

Open Calinou opened 2 years ago

Calinou commented 2 years ago

3.x version of this issue: https://github.com/godotengine/godot/issues/56610

Godot version

4.0.dev (8f6cba3a4)

System information

Fedora 34, GeForce GTX 1080 (NVIDIA 495.46)

Issue description

LightmapGI (GPU lightmapper) always bakes direct light shadows, even for lights that have shadows disabled. I don't know whether this is a bug or a design decision, but this should either be fixed or documented (both in the class reference and Using Lightmap global illumination page).

Orange lights have shadows disabled, blue lights have shadows enabled. Lights on the left are OmniLights, lights on the right are SpotLights.

Fully baked lighting

2022-01-08_02 05 17

Real-time lighting

2022-01-08_02 05 25

Steps to reproduce

Minimal reproduction project

test_lightmapgi_no_shadows.zip

mrjustaguy commented 2 years ago

I think reflection probes also suffer from this when their "Enabled Shadows" are set to on.

Edit: Reflections don't suffer from that after all, they just render Shadows from things that they shouldn't be able to see, but only for Directional Lights.. (in the mobile renderer at least, cannot test clustered due to bug with culling)

atirut-w commented 5 months ago

This is still an issue on v4.2.2.stable.official [15073afe3]. Anyone working on this?

Calinou commented 5 months ago

Anyone working on this?

Not that I know of. That said, keep this in mind:

I don't know whether this is a bug or a design decision, but this should either be fixed or documented (both in the class reference and Using Lightmap global illumination page).

For performance reasons, it can make sense not to want real-time shadows for a specific light, but still want it to bake shadows as baking shadows has no runtime performance cost. Lights without shadows don't physically make sense and make objects look like they're floating.

atirut-w commented 5 months ago

Lights without shadows don't physically make sense and make objects look like they're floating.

There are actually artistic uses for it, like casting light from somewhere hidden that doesn't necessarily need shadows which Unity's URP sample project does.