It tonemaps regions of the screen and blends them together, resulting in a smooth, less overexposed look, note the extra detail in the clouds, and sky/land saturation
(I also implemented Physically based bloom, based on learnopengl.com/Guest-Articles…, which means every pixel contributes to the effect based on their luminance, instead of an arbitary threshold. This effect works nicely with localised tonemapping)
I couldn't quite get the guided upsampling to work at a lower mip however, so the final pass is computed at full resolution currently. I suspect I may be handling the original mips incorrectly.
A couple more pics. (Download and flick back and forth between them)
The difference in saturation is really interesting, it shows how much the scene was getting washed out with a global tonemap, due to areas being over-exposed. (Using ACES tonemapping)
• • •
Missing some Tweet in this thread? You can try to
force a refresh
One thing I've learnt about programming:
Speaking up and raising concerns is hard, you have to do it early and often. It takes time and energy away from writing code. You also have to pick your battles, there isn't enough time to solve every problem on every project. 🧵
However if you avoid this, you'll find yourself getting frustrated frequently fixing bugs and putting out fires, knowing they could have been avoided if things were done differently. You also won't grow as a developer by always fixing problems after they occur instead of before.
Hindsight is 20/20, but after seeing the same issues repeat themselves after several projects, you should be thinking about how you can identify issues and problems before they happen, and avoid them in the first place.