Cycles tonemapping

Yes, good plan - insult the user base, insult the devs, and then disregard anything anyone tells you because you have so much disdain for them, that you posted only to make your point of insulting them. Cycles is not Corona, congratulations - your thread was meant to be a troll post? Wow.

Yeah you guys are exceptionally slow at picking up on these things. I read the first few lines and knew this guy was just complaining and not interested in any kind of solution.

Firstly, there is no tonemapping in the 3D viewport render, or in the OpenGL viewport for that matter, as far as I know. It would be nice to have this as an option though.

But you do have some control over the tonemapping in the render view (when you hit F12), which is applied as soon as the first chunk of the picture is rendered and can be adjusted while the picture is rendering. You can set the render to “Progressive Refine” to get the whole picture to update at once, and get a quick overview (it’s under Render>Performance).

To tonemap the render imager, go to the Scene tab, under Color Management. Most likely your screen is set to or calibrated to sRGB, so set the Display Device to that (I guess they could use current system profile, AdobeRGB and DCI-P3 as options here too).

Underneath that you have a few default view LUTs (Default, RRT, Film, Raw and Log), you can use, but don’t give you the detailed control you seem to be looking for. I believe Raw gives you the linear image straight out of the renderer, and Default seems to apply a gamma 2.2 or sRGB tone curve (which are almost the same) on the image, which makes it more viewable.

Underneath Exposure and Gamma, there is a Use Curves checkbox, and I believe this is what you’re looking for. If you check that you get controls over the Black and White level, and a curve, you can tweak to your hearts content.

If you have burned out highlights, you can increase the White Level, to bring back the details in the burnt out areas, which will also make the image much darker. You can then adjust the curve, to bring back the brightness in the image, while still maintaining the details in the highlights.


You can have both linear and spline interpolation at the points in the curve, and there are x and y values underneath, if you want to position your points exactly. Plus you can zoom in to adjust details (use Shift-Left Click to move around). You can even adjust R, G and B separately.

Would this work for you?

Just to add: if the render is set to UV editor window Ctrl and left click (move cursor over image, release on darkest point) set Black value in image; Shift- left click (move cursor, release where needed) sets white level.

Unfortunately, you right here. Even I am was beaten by author for asking details, going to imlenent it. As it was looks like low hanging fruit (looking at kernel_film.h), but he seems just want to say “blender suxx”.

Anyone know if the OPs proposal has made it’s way into Blender?

For the record, he’s not a troll. He’s a serious artist who I’ve emailed in the past about his impressive architectural work, and we’ve discussed this issue.

He raises a really good point: Cycles doesn’t have render-integrated tonemapping. Doing it in the compositor, loses valuable data. (EDIT: As Gottfried pointed out below, this isn’t true). We have similar workarounds, but it’s not the same as having it integrated.

As the OP pointed out earlier, Cycles renders really do have a distinct “CG” look to them, and I can’t help but wonder if this partly to blame? Being able to control the tone of the image in it’s rendered state could really help artists to mimic real photo-processing.

It’s an extremely complex question, and I’m still trying to wrap my head around it. But after reading Alex Roman’s new ‘Third and the Seventh’ book, I suddenly realized how important this feature is. And also maybe why Vray, Octane etc. are able to achieve that distinct photo look, whilst we can merely imitate it.

So is there any hopes of this feature making it’s way into Cycles? Someone mentioned it was previously in Cycles, but then moved to the compositor. Any hope of bringing it back? :slight_smile:

It’s an extremely complex question, and I’m still trying to wrap my head around it.

Bit depth limits information if you are rendering to single layered 8bit color files. There really is no way to tonemap these renders without losing information. Exr, radiance or 16bit renders should combine with the latest tonemapping tools in cycles to give you more than enough headroom to ‘mimic photo processing’.

The OP mentions the exposure value as if it is the only tool available so probably using an old version of Blender. I hope other posters with any savvy will try out these tools first before claiming that cycles can’t do something in this department. It’s not quite the same as Lux. But it’s a lot better than it used to be.

Serious artists can be trolls too! And trolls can be serious artists, too, I guess.

Edit: @zealpal, sorry to repeat your ideas in my post, I totally missed it on my first reading, and you put it much more clearly and in more detail.

So even though Cycles doesn’t have the right pro wokflow it appears at the moment, do we have an “Ideal” method to make renders look more realistic? maybe there’s more than one way to skin a rendererd cat? this more advanced info just isn’t available for blender (apart from a few technical difficult to understand bits in the wiki), and as an ‘artist’ having a workflow to follow would make it a heck of a lot easier to get my head around.

I’m still confused, I still take shots with my Canon and I blow out the whites sometimes, or under expose etc - shooting in raw it can help a little to adjust afterwards - but even the worst photograph, still looks real.

Apart from a quality scene, lighting modelling texturing etc etc, there’s obviously more to photorealistic renders than just rendering out different passes, adjusting and combining in post. Anyone got any tips to go that little bit further (without just adding bloom and chromatic aberration)? :slight_smile:

Jay-artist, the features discussed here have very little to do with photorealism, IMO, but rather with simulating the tonal distribution and contrast curve of photography, which appears to be a target for some reason. Of course the photography industry has long been trying to simulate the ‘real’ world by which I suppose they mean what you or I might see, with mixed results at best.
The same rule applies to 3D renders as to Photography - if your first step is wrong, you’re never going to be able to fix it later to look as good as it would have if you had done it right from the beginning.

but even the worst photograph, still looks real…

this is because you have learned over time to ‘read’ a photograph and interpret its elements to reconstruct a ‘reality’ from it. You might just as easily say, “Even the best photograph looks nothing like the real thing.”
It’s like music - you could have the very best recording played on the very best system - but it will never actually sound the same as the actual musicians…

I think it is very possible and not super hard to do as storm_st pointed out. Reinhards “Photographic Tone Reproduction for Digital Images” and subsequent works are well known and this could be implemented both in cycles or in the compositor. Doing it in the compositor will not per definition lead to some kind of data loss. But I think It could be kind of cool to just add it to cycles and have direct real-time feedback in the viewport on the effect.

Edit: there is a possible issue with speed as pointed out high up in this thread but if it is only reinhard and if we make an ok implementation that runs the GPU we should be okay I guess.

I’m also in favour of having tonemapping directly in the viewport and not just in the compositor. Because right now if you set up the lighting and shaders of your scene and you want to do adjustments using tonemapping, you always have to render, render render. Just like back in the days with BI :frowning:

You don’t lose any data by using the compositor because Blender internally stores all render data as 32bit “HDRIs”.

As has been mentioned before, you dont lose any information if you save out as a 32bit exr… so saving out and doing compositing work you dont lose any headroom.

There use to be a film response addon for the RGB curves node… this was removed during the transition between SVN and GIT… I was in contact about it with Campbell the response was that he discussed it with Brecht and now that there is the colour management tools in, there was no need for it anymore.

In anycase I have saved the addon and its here – http://thehods.com/tmp/compositing_film_response.zip

works with the latest buildbot, extract into blender/2.70/scripts/addons folder (so there should be a new folder in that one called compositing film reponse).

Enable it in the system prefs, go into the compositor, add in a RGB Curves node, make sure it is highlighted, in the properties tab (N, the right hand menu) there should be a ‘Film Response’ menu now, select the film response you want and see the difference… Very usful

Do you really need to re-render using F12? Builds I’m using seem to do viewport updating fine (pulling them from the buildbot), what settings are you trying to use?

uhhhhh potato?

number one rule in life is if you didnt pay for it your not allowed to complain about it

I don’t understand it:
In post #1 rawalanche wrote: ‘Tonemapping in post process phase is absolutely out of question as i need to work in WYSIWYG workflow.’
In the video (see post #41) made by rawalanche, the tonemapping in Corona is controled by ‘Highlight burn’. Which is in post processing section.

Corona post processing section parameters are part of the render. It’s not something you need to apply once the render is done.

@lenain34: thanks.
I just re-read post#36 by storm_st, very clear synthesis for me.

What do you mean by “photoreal” though? Most cameras (up until recent digital cameras) did not include any type of inbuilt or automatic tone mapping. The only control you really had was exposure control (perhaps using fill lights and/or reflectors to bring up shadow areas) - the rest was up to the response of the recording medium (film/CCD/CMOS)

Tonemapping or local contrast/brightness adjustment has traditionally been done as a post processing step, whether its using dodge/burn tools, curve/gamma adjustment or exposure stacking.

Such tools are designed to either give a different aesthetic - or to better approximate the dynamic range of human vision - but “photoreal” doesn’t have any defined meaning since different camera/film/sensor/developing combinations can produce totally different results even for the same scene.

Have I understood this correctly? My interepretation of this thread is that:

  1. Tone mapping is available as a ‘post-pro’ via the colormanagement tab.
  2. Rawalanace wants tone mapping to be applied prior to post pro, i.e. already visible in the viewport render/or immediately to the rendered result whilst it renders on the screen.
  3. The reason Rawalanche wants this is so that when he sets up his scene he is able to correctly adjust the lighting to take into account the tone mapping that will be applied later…rather than make a best estimate of the lighting only to find out that certain lamps/emission planes need to be attenuated (as opposed to just some general post processing tweaks).

I am little confused if this is the case…since the colour management is instantly visible in the viewport with rendered view in my version of Blender. I can set the appropriate white level, and tweak the curves, both of which are visible in real time…which suggests to me that I am not understanding the real problem correctly :slight_smile:

At the time the original post was made, the color management stuff did not affect the viewport rendering. I guess I was a little short-sighted at the time thinking that wasn’t such a big deal. So, that being said, I think a general solution is to add some tonemapping functions into the color management panel (reinhard, exponential, i don’t know).