I'm implementing a pbr ray tracer. Let's say that I'm at the end of the process: for each pixel pi, I accumulated the radiance value in vector pi = (radR, radG, radB). At this point, these values are unbounded, so I use the Reinhard tone mapper to have values between 0 and 1. Then I can scale it in the device range, for instance [0, 255] for usual computer images.
Here is my problem, the Reinhard tone mapping is not aware of the range of radiance in the whole scene. I mean to compute the tone mapping I do: pi = pi / (1 + pi). So if pi = (100, 100, 100), the tone mapped pi is (100/101, 100/101, 100/101), but if pi = (1000, 1000, 1000), the tone mapped pi is (1000/10001, 1000/1001, 1000/10001). So the final values will be really close after tone mapping but one should be a lot greater than the other, right?
Am I doing something wrong, or missing something?