A better tonemap for Cycles, death to easy burnout.

I’ll let the image and the .blend do the explaining.



Cycles_physTonemap.blend (952 KB)

As you will notice, the top bar is what you get with the default tonemapping settings in Cycles, the middle is my settings (done through the properties panel, making use of curves and a higher white-point), and the bottom is the value difference.

The way I set it up is so that the enhanced tonemapping will give expected results with the same energy values for lamps, as you notice, the intensity of the pixels nearest to the lamps are similar, but it’s the falloffs that are a bit different.

I hope this will help those make better renders in Cycles by making it easier to avoid burnout, enjoy.

Could we ask for a screenshot of your settings rather than have to poke around in the blend file?


The coordinate settings for the upper dot on the curves widget (not shown) is X-0.37000, Y-0.82500

Now one might wonder why I don’t just use the light falloff node, not only does this mean I don’t have to mess with that node unless I want genuine falloff alteration, I also found that its ‘smooth’ option didn’t work all that well for lights inside of glass.

Of course, this can probably also be used with BI as it accesses the same settings, so they aren’t fully left out.

A final note, I wasn’t the one that initially came up with the idea of having the white-point at 10, I just took that and expanded on it with the curve and exposure settings.

Sweet, thanks. :smiley:

Dear Ace Dragon,

Always a cool tip under hand!
Thanks a lot to share your clear knowledge!
Bye bye.

Interesting test
It is handy to have it both on viewport and under f12

I downloaded your blend, rendered it, exported three different tonemapped images, opened in Pshop, and I can see in the histogram how levels move.
Losing dynamic range.
Of course, the test needs to be done on a 32 bit exr.

Changing the values of the lamps, to have some burned areas… postpro can’t do much to fix it, as expected.
On darker renders (less lighting), on shadowed areas, you can’t do much in post pro (which you still insist to call it “ToneMapping”)
what do you expect except of banding effects?
The 32 bit export is the best choice, still no miracles should be expected.

Very interesting thread and a very handy tool. It works, as mentioned,
both in the render result window and in real time progressive rendering
in the viewport (meaning it doesn’t reset sample count when tweaking)
Can save much time otherwise spent for test renderings.

Now from what I understand (also from the previous topic on tonemapping),
this is a step forward for Cycles (because of real-time control), but what it still lacks
is a better tonemapping algorithm (like Reinhard) because the current one
decreases (compresses?) it’s dynamic range to much?

What about the correlation between exposure setting in render controls?

sorry, a bit confused :spin:

Swene; as far as I’m concerned, Reinhard is unsuitable for getting optimal artistic results in some cases because it auto-adjusts to the range of the image. In Luxrender, it means that oftentimes an indoor scene will have blown out areas outside of the windows (and for aesthetic purposes you might want to try to match what your eyes see). An additional side effect then is that the tone of the entire image changes when you adjust the intensity of one of the lamps so it becomes more of a balancing game rather than just setting concrete values.

Michalis; I can get softer results by lowering the ‘exposure’ value, but I’m really not sure of when the softness becomes ‘too soft’, the goal here was to get softer effects, but similar intensities so you don’t have to completely rethink the values of the lamps.

I’m going to have a look at this, and give you my opinion…once I figure out why your cursor is in outer space, your camera is turned sideways and is at x= 20, y=-6, z=15, and also why the whole point of this exercise is hidden. If I didn’t know any better, I would have thought you downloaded Blender a few minutes ago for the first time. :spin:

http://www.pasteall.org/blend/27664

EDIT: Sorry, it’s not only you. I try to help people a lot, and I also have a look once in a while at other people’s files to learn something, but it seems every time the UI is split into 10 windows, I can’t find the camera, someone was messing with the clipping, and so on, and so on. If we are going to give out files I would like to see some kind of universal language if you will, like something we can all understand with no personalized adjustments. Good of you to be helping, and I do applaud you for that, but your file here is kind of a mess. Some people with less knowledge than me are going to be looking at these things and picking up really bad habits, or will just be totally lost.

Burnout.
Indeed.
Export as 32 bit exr.
Our best chance.
The rest are PostPro.
Ace, this isn’t the tone mapping I am waiting for.
But, the best we can have so far. 32 bit.
Fair enough.
We had it in the first experimental versions of cycles, remember? The films. No exposure or gamma, or curves. Just the film presets.
They disappeared after some months. They supposed to become part of the compositor. Because they are PostPro, that’s why.
I’m glad we have them back. It was a wrong decision. We need them on 3d preview, badly.
To have better results, I will involve tricks on lighting, a time consuming work.
As I used to do in Blender Internal.
Such tricks produce richer effects, even when used under the (how can I describe it?) zbrush renderer. ha

Is there any method to apply a tone mapping before rendering?
I really like to give to the renderer something to think about.
LOL

The camera film options are in the color management panels (right of the word ‘Look:’)

I don’t get why people assume the panels don’t exist, you can indeed get a preview in the viewport but it seems like some do not want to believe it’s really there.

Ace, was there a reason you use auto handles in the curve settings? If you set the gradient of the line equal to the white level that you set using vector handles, then you can make that entire part of the tone range remain completely untouched (i.e. same as white level = 1 without curve), and then set a shallower gradient beginning at the brightness that your wish to only attentuate the burn out.

Do you prefer the result with a curved map of values?

The camera film options are in the color management panels (right of the word ‘Look:’)

Yes, we all know this. You wrote it 100 times

Dont forget to turn off clipping in the properties for the curve ( the little dot next to the rench icon) and you might have to change the the max x and y as well

edit: I really think they should change the rgb curves clipping position to make it more visible

Actually, if you don’t mind bumping up the power of all of your lights, you can turn the exposure slider to 0 and let the curve itself take care of all of the tonemapping.

When I did it, I can bump up the power of the lamps and not get any real burnout whatsoever, though I wonder how soft would be considered too soft?

EDIT: Actually, scrap the part about bumping up the lamp power, you can just lower the overall whitepoint to 2 and you’ll have the pure curve-based burnout-free tonemapping while being able to keep the energy values the same.


Okay, the decreased dependence on the exposure curve here should lead to a solution that has a bit less burnout with very powerful lights than the solution presented in the first post.

I thought I had something going turning the exposure to 0, but then you have the fact that your saturation in well-lit regions will go down by quite a bit, this tries to correct that while keeping as little dependence on the exposure as possible for brightness.

Tone mapping supposed to be something else.
What we have is a PPros tool that works in 32 bit.
Not bad at all. We have a serious tool here.
Film presets are very well done. I started using them, and I love it.
Anyway, how we decide to call it, doesn’t matter much.
Over burned, right, try the 32 bit Ppros first, but our best option is to control these lights a little better.

A quick look at the wiki for Luxrender’s tonemapping options seems to indicate that you’ll get burnout in any engine if you make the lights bright enough.
http://www.luxrender.net/wiki/LuxRender_Tone_mapping

Yes, Luxrender uses physically correct tonemapping and it still gets burnout, it also seems to be about finding the right balance between soft tones and saturation, because bright areas will see a decrease in saturation the softer you make it.

Glad you are progressing on this well! Am following on this!

Anyway,
Kodak Portas are my favorite presets.
Adjust your lights on this preview and have something interesting.
Because, cycles by default, creates a rather grayish, linear, AO like result. It should be like this. All well done IMO.
Curves are great for fine tuning. If needed.