Keeping tonemapping simple : Fattal tmo in qtpfsgui
Yes.. “simple” i’m joking of course 🙂 .. nothing simple (as in reliable , predictable) in playing with complex tonemapping operators (= anything fancier than the Reinhart included in render engines)
But i might have some useful suggestions about that :
First a note : i’m a big fan of HDR look but .. i often think, its results can be achieved with simpler tools.
As i said before, i often wonder if those effects are a poor man substitutes for basic/fundamental shading skills : Control your shaders and your lights, use artistic sense and skill and you won’t need any fancy technical tmo.
Yes.. well , i must be doing something wrong in my last personal project .. i didn’t like the results , so i went back to qtpfsgui for help , ah the irony !
2nd note : I‘m not talking of tonemap as exposure control , only as a “style effect” to enhance contrast , make details pop up , and get a more illustration-like feeling : makes the image a little less photoreal for sure, but generally nicer.
So i resume here my findings and my current tactics for hdr tonemapping , using the OSS tool QTPFSGUI (a.k.a. Luminance HDR ):
How to Get a tonemapped image with strong local enhance effect, then composite with original :
1) set correct pregamma : if your file is a normal srgb image set it to 0.4545 (lower left of “tone mapping ” screen )
only if you have saved your image as linear leave the slider to 1.
(to check : in main qtpfsgui winfow , a normal SRGB image will look brighter and washed out . Linear will look normal . this is because in main window gamma correction is applied by default )
2) set prevew to full size : results of tmos change unpredictably with scaling , so preview at full size , expecially with ‘Fattal’ it’s fast enough anyway.
3) choose the tmo : FATTAL
-Reinhart : not too aggressive , but no hdr local enhance , just an exposure control and I assume that was already taken care in the render engine.
–Mantiuk: good local contrast enhance without messing up the image .Still hard to really fine tune and balance the look.
–Durand: very slow to compute , very nice subtle enhancing effect .. but on some image a real pain to get right settings.
-Fattal : My current favorite : typical hdr look, super strong enhance and artifacts .Resulting images are almost always unusable directly. But they never are anyway !
This is the whole idea : Forget getting a finished image out of Qtpfsgui , you’d go crazy balancing strong enhance without messing the colors and contrast.
Just get a “hardcore HDR look ” image fast and easy and composite it at 10-20% with original.
4) set saturation to 0.1: imho, discard colors from tonemapped image, focus on values and contrast , make it B/W and later use original colors in comp.
5) set noise reduction to 0.1 : Fattal will tend to mess up a lot , adding weird halos and noise , this is a good value to keep that under control.
6) set alpha factor to 1.2 –1.8 : this is the key step : raise it to get more ‘enhance’ , but not too much or you’ll loose the original shading and you’ll get a flat image with noise and crunchy / burnt halos (=typical fattal artifacts)
7) set beta factor to 0.7 — 0.9 : raising it will reduce the artifacts , at some point image will go darker and eventually black.
8 ) Save the image: as LDR or HDR format for compositing.
9)Composite onto the original with 10-25% opacity
An example : (top), what i consider a good tonemapping result : looking like a old b/w film ,
Note how some artifacts are starting to show .. noisy black dots and halos inside bright areas , but it’s fine : the original lighting is mostly still there and wasn’t completely flattened.
Composition nodes example: (bottom left : source render – bottom right : result )
The tonemapped image is blended with the original render at 15% opacity (in general : 10-25% is good, only blend by value if you want to keep colors)
Here, i first blended the tonemapped with an AO pass : the 2 are similar, and can work well together (or actually tonemap can act as substitute for ao pass .. i did that when i used Luxrender , that being physically based had no AO pass )
Note : the image is a personal project and is not finished .. i’ll post more about it.