Cycles tonemapping

Hi, is there any tonemapping functionality in blender cycles. I find it impossible to output photorealistic results without it, as highlight burning always eats most of my image, or if i try to retain highlights in acceptable range, most of my image is underexposed.

Tonemapping in post process phase is absolutely out of question as i need to work in WYSIWYG workflow. I can not afford to rely on “I might be able to do something about it in post once it finishes rendering” mindset.

Thanks in advance.

Have you tried color correction node?

As i said, post processing solution is out of question. I need tonemapping in renderer, not in postprocess. I need to see what i am doing.

You can try Exposure under Film settings. It’s not adaptive tonemapping, but it gives you basic brightness control. If you then save your render as a 32 bit EXR you have all the information and you can adjust it afterwards. There’s also Curves option under Color management, but that only applies to rendered image, not the real-time preview, so it’s like using curves in post.

Well, excuuuuuusssee me.

deleted for being a dumb comment

So in other words, Cycles is still not capable of tonemapping (something like Reinhard exposure control for example), as all of you presented only post processing solutions (Some of you probably did not even read content of the post, just the thread title). Post processing solutions do not really work as you do not work in a WYSIWYG fashion anymore, making workflow inefficient and inaccurate.

You should also not confuse exposure and tone mapping. Exposure is a brightness control of output, while tone mapping i talk about is a selective adjustment of various ranges of the image.

Many of you might think that workflow of producing output without tone mapping and then trying to save it in post is a standard, but trust me, it is not. I have not seen many truly photoreal scenes done with Cycles, most of them due to the lack of proper tone mapping. you see here? This has been praised as one of the photorealistic interiors done in Cycles yet it looks rather mediocre. Main reason is that highlights are too sharp and crushing, producing quite CG look, and affecting appearance of material shading quite a lot. Ask yourselves why all those Octane renderers look so significantly better :wink:

Those tonemappers you speak are nothing more than a post-pro effect that happens to be built into the renderer rather than being applied in another program. Technically, an exposure control IS a form of tonemapping, just a very simple one. Reinhard honestly is not THAT great of an algorithm either, it’s barely a step above a simple auto-exposure. If you want good tonemapping options, send it through an app meant for that, like Photoshop/Photomatix/Luminance/etc. Or use Blender’s compositor, between the color correct and tonemap nodes, it has more flexibility than you find built into most render engines.

“you might think that workflow of producing output without tone mapping and then trying to save it in post is a standard” It IS standard. No professional studio worth their salt would render anything straight to PNG. If you decide later you just want a simple linear gain+clamp, that is easily done in any 32bit-capable image editor ever. But you have plenty more options if you want them, AND you can change things in post later.

You claim you are trying to save time by doing it in-engine, but I can promise you, you won’t in the end. It takes extra time after the render, sure. But that time is nothing compared to the time you’ll spend doing test renders dicking around with exposure and tonemapping.

The whole idea that your render springs fully formed from the render engine is a common misconception. That’s just not how it works. You can do it that way, sure. You can also render animations to video files instead of image sequences. Both are just setting you up for poor quality and a lot of wasted time in the long run.

Yeah… that’s not how anyone works, sorry. EVERYTHING is done in post. There’s not a professional on the planet who expects their in-engine result to be final. All tonemapping is a post-process technically, by the way, whether it’s done automatically by the renderer or in a compositor like 99.9% of all real work.

Again, you confuse tone mapping and post production. I rely on post production heavily for my work. But tone mapping is an essential element of lighting setup. I can not work in my scene and tweak elements such as shading when i have a white nuke around my windows, or when half of my render drowns in black.

Exponential/Reinhard color mapping in Vray.
Photographic exposure control in MentalRay and finalRender.
Camera response in Octane.
Burn value in Maxwell, Fryrender and Thea.
Highlight burn (Reinhard) in Corona

Tone mapping of output is absolutely essential as you often want to compress range of the output to visible range so you can work with it. But work with it in real time… not to work blindly and hope there is something you did that will come back in post.

I have been doing architectural visualization for 3 years and now doing VFX for about a year, and in none of these branches i could get by without tonemapping in a renderer. Or i could, but i could not even remotely achieve the realism i do now.

To explain a little better. This is my portfolio
It is slightly outdated, as my skillset has evolved a bit since i did my last personal work. Right now i am doing a research, and part of it is to prove that even Cycles in blender is capable of producing highly photorealistic result, but so far, lack of tone mapping along with counter-intuitive shading system are quite a dealbreakers :confused:

I will try to make some visual examples once i finish today’s work.

What exactly are you trying to achieve? If you want to compress the dynamic range of test renders, just flip on the compositor and stick a tonemap/curves/color-correct node in there. It’ll be applied to renders you run automatically. No file-saving or rountripping or anything required. You don’t have to actually use that setup in the final render, just change it or turn off if you don’t want that. I really don’t understand why this doesn’t solve your problem.

Now this is the important information no one has told me yet. That color correction get’s automatically applied on rendering output. I have yet to test it, but i hope it works in real-time, not after rendering finishes.

Ok, so how can i view result of my corrections right in the renderer?

I have only found a way how to view corrected output it viewer after it finishes rendering, which basically equals to post processing solution, but i have not found a way to see correct (tone mapped) output while rendering.

Now if i have a scene where i am working with lighting and shading, i can not imagine a workflow where i would have to do adjustments blindly (on incorrect un-tonemapped output), and then always go take a look in viewer if it’s there, and if not, go back to render and continue making adjustments on incorrect output.

Regular wofklow works as follows: Output correct image > apply post processing
Blender workflow sounds like: Output incorrect image > correct image in post production > apply post processing

It add’s an obstacle in the way…

As I said before, for the real time preview all you have is the exposure. I think you’re missing one important thing and that’s you’re not losing any information when you save your 32 bit render. It’s all there, you can adjust your exposure, tonemap, whatever. It’s a non-destructive workflow which allows you to change your mind later on. There’s nothing baked to the image (no tonemapping). Try to composite the render passes together with any kind of tonemapping applied to them and it won’t work. You need straight linear images. Also keep in mind that cycles was designed for animation, where you do compositing and tweak it afterwards.
BTW. there’s a Tonemap node in the compositor which you can plug in and it does some kind of tonemapping automatically. So you just set your comp beforehand rendering and then you see it applied after your render is done.

Again… this is not about post processing, this is about seeing correct output right in the renderer, when i work with materials and lighting. If i have for example window frames in an interior scene, and want to tweak their material, if output is not tonemapped, all you see is a pure white burn… so you have to render, wait for render to finish, pass it through the nodes to see the result, then go back, and re-do the adjustments. This breaks any rapid iterative workflow.

So yes, exposure is only thing that can be processed at rendertime, and it is impossible to tonemap rendering output right in Cycles. That’s all i needed to know. Thank you all for your time.

This thread is quite interesting and unfortunately many people don’t realise how difficult it is to work on a scene when the preview can’t show whole dynamic range of the scene and propper tonemapping. The good think about cycles is it’s interactivity but it’s useless when you can’t see your scene because half of it is totally dark and the other half is overexposed and you are trying to setup the lights.
I don’t find the workflow with doing it in postpro very artistic friendly unless you use light groups which are little bit difficult to set up and they cost some rendertime. So it would be very nice to have the option to adjust the preview tonemapping…

I won’t claim to know the answer (yet), but it sounds related to linear color space. Although the visually explained website is down, it is stored at

Almost everything on that page is out of date, and linear workflow doesn’t have that much directly to do with OP’s question anyway.

I don’t know how many people it takes to tell you this, but: The correct image that is supposed to come out of the is the un-tonemapped linear color data. The real tonemapping should be done in the compositor, with the other post-processing (or are you seriously telling me you aren’t doing anything of that?). Feeding a tonemapped image into the compositor would be wrong.
Now, I do get that you want a preview of tonemapping similar to Octane. It’s a desirable feature that was actually present in Cycles, but was unfortunately removed because it belongs in the compositor. Eventually, the compositor setup should be usable in viewport preview, but that feature doesn’t exist yet.
In general, if you’re using plausible light setups there’s no problem in working “blindly” and expecting to getting it right in post. It’s exactly asm9105826 says: that’s how people work all the time.