So, let's play with the metro map.
Original map (light entities + some light emitting shader, legacy build, the overall light ambiance is nice, but nothing is realist at all:
Original map (light entities + some light emitting shader, bounce max, very high res lightmaps (the higher q3map2 can do, more than 7h rendering):
In fact, the higher lightmaps resolution you use, the better you see how they are wrong:
In fact, q3map2's lightmaps are (alsmot) good only if you do low res resolution, because the renderer will blurry them on interpolation. Using low res lightmaps forces interpolation which is just a blurry process to hide the problems. Please hide this ugly render behind a naive interpolation on a low res lightmap the next time please:
Also, q3map2 has a -bounce option to do some radiosity, in fact, you must avoid it, because you will just create more wrong shadows. You can't do radiosity if you use point lights, radiosity only works if you only use light emitting shaders, and if you mix both, the results is wrong wrong wrong:
Why three shadows here since we have lights everywhere: light point shadow casting can't be good:
Wrong shadow casting in all its glory:
By default, it looks like q3map2 paints some lights and cast shadow over it, so, the more you have light sources, the more you get wrong shadows. How you can get shadows in front of a light source? In fact the mapper tried to workaround the wrong lights adding some surface lights to repaint light over the shadow, but it does not work, it gives uglier results since the shadow is now more contrasted with the lights:
Do you see the two shadows of the bottle?
So, q3map2 allows surfacelight and bounce for radiosity, but it's all wrong. Also, surfacelights only works if you subdivize them, if you don't subdivize them, they are acting a bit like point lights too, which is wrong. This is a surfacelight build, without bounce. The lights are ok, the shadow are ok, but there is some big places that are black just because they never receive any light since in physical worlds these parts must receives indirect lighting, that's why we need bounce.
So, this is a render with bounce (higher res lightmap, surfacelight only, heavy subdivision, maximum bounce). It takes more than 8 hours to render, burning my 8 core CPU at 78° for more than 8 hours. To get that another ugly rendering. But if it's very ugly, it's not wrong except the bounced light amount is too low:
So, the really big problem is the amount of bounced light is too low, badly, this is not a compile switch, it's a per-shader option, so you have to rewrite all the shaders, or tweak the q3map2 source code, things I haven't done. To look real, there must be more light on the ceiling, between the wall and the ceiling, and between the two railway. Increasing the amount of bounced light can lead to a natural looking render:
See the shadows behind the chairs: it's ok.
See the shadow behind the bottles: it's ok.
See the shadow on top right, from the stem that sustains the lamp: it's all ok:
See the shadow from the dock, it's all ok:
So, the bounce is wrong, not enough light bounced, and some other issues. But it shows we need a real raytracer. In fact, it's not a problem if the render lasts more time, because in fact we will save days of trials and error process, workarounding bad pointlights with bad surface lights that workarounds bad pointlights etc. If we use a real raytracer, the render will probably last longer (btw, there is probably raytracers that are fare far optimized than q3map2, and there is some opencl based raytracers now), but the mapper will save days without having to deals with issues, just putting lights and getting natural render. The only tweak the mapper have to do is to tweak the amount of light source, the intensity of light and the light color, which is already so much work.
Currently, 90% of time for the lighting part of the mapping process is spent to workaround bugs from that wrong q3map2 renderer, which is painting light and shadow with hacks. It was ok 20 years ago when everyone was playing on a 640x480 display that hides the problem.