Update 1Cheongsam takes place around sunset, which creates a lot of challenges for the lighting. It is the classical photography problem: the main scene looks best with a higher exposure.
... but that blows out the sky, which looks better with a lower exposure.
I have seen a lot of games analyse the screen and change exposure based on it, but I feel that does not capture the actual feeling of acclimatising to exposure; and it just ends up with the worst of both worlds, i.e., oscillating between two bad things.
From photography I got the idea of implementing a graduated neutral density filter, which compresses more onto the same screen:
This works well, but the follow-up problem is that anything which is locally brightly lit will not be compressed nicely; and in real life a photographer can select their GND filter per shot. In a pre-rendered or static-shot game this would be an ideal solution; hand-author an exposure gradient for every shot. But in Cheongsam the player can freely look around.
The solution is to define the gradient in another way, by having a number of points which create a gradient that is used as a multiplication:
You can see the yellow-ish gradient at the top right; the red channel of this is the exposure amount.
This still runs into the same problem of dynamic compression, again seen in photography; the image loses a lot of depth because the compression effectively obfuscates information which the viewer is using to convert the image into a mental 3d model. I am thinking of just keeping it subtle enough for the cues to work.
An additional effect which hopefully brings back some of the brightness information is that every point which controls an exposure has an 'excitement'; it has to be seen to fade in, and not seen for a while to fade out. So you get a subtle 'this is bright' fade. But unlike the full-screen exposure method, it does not immediately destroy dark areas:
All in all, it is not a 'realistic' effect; but us compressing vast brightness differences onto a monitor is not a realistic effect. Without the luxury of pre-planning which cinema has; and without the luxury of 'one shot does it all' of photography, a dynamic compression method can be very beneficial.
Another option which I considered (but have not tried) is describing the screen's brightness based on a set of harmonics. This could 'automatically' recognise the bright and dark areas and create gradients. Mainly I have not opted for this because I want hand-authoring control; and I am just sceptical about the quality of automatic methods.
In a game with free-walking (which Cheongsam does not have) an interesting method could be to define the exposure points in the same way we usually define cubemaps; spaced out and interpolated.