Any way to somehow recreate area lights in godot

Godot Version

4.22

Question

As the title says, is there any way to get a similar light effect to the area light found in programs like Blender in Godot? At least for my case, I just want to emit light from a square source, but still working like a spotlight.

Thanks in advance

For spherical area lights, use an OmniLight3D or SpotLight3D and increase the light’s Size to a value above 0 (not to be confused with the Range property). This will also make shadows blurrier when far away from the surface receiving the shadow, which simulates real world penumbra.

For other light shapes, the easiest way to recreate area lights in Godot is to use global illumination of any kind. Emissive materials (materials with an emissive texture defined) will affect their surroundings when some kind of global illumination technique is in place.

If you want an area light that has no corresponding emissive material to be visible, you have 3 options:

  • Create a Meshinstance3D + BoxMesh with an emissive material, bake VoxelGI and hide the MeshInstance3D node after baking. The emissive lighting from the material will remain visible. This approach can’t be used with SDFGI, as baking happens in real-time with that method.
  • Create a MeshInstance3D + BoxMesh with an emissive material, enable Add UV2 in the BoxMesh’s properties, bake LightmapGI and hide the MeshInstance3D node after baking. The emissive lighting from the material will also remain visible in this case.
  • Use a Decal node with a GradientTexture2D in its Emission slot. This won’t look ideal as the lighting is purely additive, which doesn’t mimic real lighting, but it can work in a pinch. This method is also fully real-time.