Maybe you just get screen coordinates of light source in screen space like X and Y where they are -1..1
Then you multiply those by some coefficients and draw sprites on screen
Seems really simple, but I do not yet know how to get screen coordinates from get_global_transform()
I believe it is more efficient than using a shader