How to do bloom->tonemapping->LUT correctly without making pixels too gray?

First, here are all the testing images (1),(2) and (3)

(1) image below = original render, without any postprocess (but the cube needs bloom!)

(2) image below = original render + bloom (bloom easily become too bright!)

(3) image below = original render + bloom + ACES tonemapping(but overall too gray! looks bad)

So is it an unavoidable result that ACES tone mapping will make the overall pixels looks “gray”?
is there any other tone mapping function which keeps saturation the same(still looks colorful & cartoon feeling after tone mapping), but only affect brightness(can make bloom pixel not over bright easily)?

My current idea is to write a new tonemapping function, which only tonemap brightness while keeping saturation the same. is that practical?

===========================================================
The final goal is to make HDR rendering looks like this:

Thanks for your help.

Additional video of image(2):

turns out ACES is not a good choice, I am now using custom curve

without tone mapping:

with tone mapping:
4699580--443549--2019-07-01 01_08_52-GPUInstancing - indirect - Android - Unity 2019.3.0a6 Personal DX11.png

Yeah, ACES is really bad at preserving colors, i.e. try to apply it to pastel pink and see what happens. If you can write shaders you can write some better tonemapper like Gran Turismo tonemapper.

1 Like