Struggle Against Tonemapper

Let me get this straight, is there any friggin’ way to disable the Tonemapper?
I tried just about everything
I asked in previous threads like this one:

And got no answer on how to replace it.

So please, pretty please, with sugar on top, who do I have to beg at Epic Games, to implement a checkbox in Post Process Volume, or something like that, which was promised years ago.
Is it really that difficult?
You can get sooooo close to the look that is unaffected by the Tonemapper by tweaking a Post Process Volume:

TM ON
http://s15.postimg.org/yos5orocr/TMON.jpg
TM OFF
http://s23.postimg.org/sajjpyh17/TMOFF.jpg

But can you disable it completely? Nope! Not in game, only in editor window for some unreason.

I’ve been struggling with this problem too for some time now. I’ve tried everything but I can’t get my colors right. Epic should atleast give us the ablility to adjust the tonemapper settings like Unity does.

Make postprocess material. Then set “replace tonemapper” done.

I’ve asked you in the other thread (link in the original post) which steps do I need to take to make it work, and got no answer.
Maybe I’m doing something wrong, here’s what I’ve done again:
I set up a new material, set it to Replace the Tonemapper, Create a Post Process Volume, Assign previously created material to Blendables, tried to fool around with the material, but it didn’t cancel out the original Tonemapper :confused:

Just tested this. This simple material overrides tonemapper. Exposure settings don’t work anymore. Bright spots are all clipped to white.

Thank you for answering, so I guess just replacing the Tonemapper with something won’t magically fix everything)
Is there any way to make it work?
I’m just really trying to help not only me, but everyone else who hates this feature, which at best limits precise control of colors, and at worst makes everything made in UE look the same.
It’s the UE way or the highway, which sucks a lot.
I won’t use Eye Adaptation, I don’t need the engine to map my values into a LDR, can’t I just see the normal image without this bs!?

So, just to recap, I’ll use the default map as an example:
Tonemapper (Why is this default?)

http://s14.postimg.org/7maag19f5/Tonemapper.png

No Tonemapper (What I want)

http://s12.postimg.org/k1tq5n5q5/No_Tonemapper.png

As close as you can get to No Tonemapper by tweaking a Post Process Volume

http://s15.postimg.org/gqvrin6yj/Best.png

And the solution I was proposed above, unless I got something wrong again :smiley:

http://s27.postimg.org/mrvntbeqr/Worst.png

Calling out for any help…

It seems that you have to do linear to sRGB conversion in your post process material too. Just try with sqrt(color). If that looks aboutright you can do more precise linear -> sRGB conversion. chilliant: sRGB Approximations for HLSL

Edit: You should look there what all tonemapper does. https://github.com/EpicGames/UnrealEngine/blob/master/Engine/Shaders/PostProcessTonemap.usf

It’s also do film grain and much more.

You are correct, it does much more, that’s why disabling it would not be the best solution.
And I had a feeling that doing that conversion is exactly what needs to be done.
The problem is that I’m only a concept artist trying to put my ideas in 3d, so I lack the knowledge and skill necessary to perform something so complex to me.
And it seems so weird that we have to do this reverse engineering, when it should be the default option and what we got as a default right now should be an extra feature.
If anyone here cares and understands how to do it, please give it a shot, you would help out so many of us.

UE4 use physical based rendering as default. This mean that HDR has to be default which mean we need tonemap by default.

I’m sorry, but from everything I’ve read it seems that all of those 3 concepts can exist without the other, if I understand correctly.
Tonemapper is only useful when you have HDR, but you can have Physically Based Rendering without HDR, which is what I want, so the Tonemapper becomes obsolete, yet you can’t turn it off.
Would definitely like a second opinion on this though.

You can’t have physical based rendering without HDR. Most specular highlights would just cap to white.

As said, you can replace the tonemapper with a post-process material. But as you saw, it looks darker if you do it. You can try a gamma conversion like this:


Tell me if that is ok for you.

Greetings!

3 Likes

Yes, thank you very much, I really appreciate the effort, that disables the tonemapper just fine)

I want to thank the people in this post!
The reason I do some grave digging here is because this was the only solution to make my pixel art game look normal.
It took me a long time to find it. Either people are not using unreal engine to make pixel art games or people dont notice their pixel art looks wrong.

I first tried the console command “ShowFlag.Tonemapper 0” This worked fine, untill I build my game… in the build the tonemapper is back and messes up my pixel art.
I also tried manually changing the post process settings to recreate the look I should have. But you can never get it just right, and it is messy in any case.

This worked, even though I know the sRGB conversion posted by Pacochan is not perfect, it is pretty close.

I wonder why there is no simpler solution, even now in 4.18.

You can also just change the tonemappers response in the post volume. You can make the ACES tonemapper look like almost any other tonemapper via those settings. Tionemapping in general is necessary, but value crunching is something entirely different. So if you just have troubles with the crunched blacks, rather tweak the toe etc. than disabling the tonemapper.

I too would like to thank you all on this post. Even though it is an old one it still is a viable solution and really helped me in making my line drawn, black and white game! So on the off chance anybody still cares thanks a bunch!

r.TonemapperFilm=0 in your ini, no idea why nobody said that earlier

Which ini?

Stumbled across this thread while struggling with this issue myself in 2023.
Very annoying for 2D games, especially if you do want to leverage post processing and lighting effects.

Running in Unlit mode looks closest to the base textures, though obviously turns off lighting and also Post Processing. This can be done by adding r.ForceDebugViewModes=1 to your DefaultEngine.ini under [/Script/Engine.RendererSettings].

You can ainstead take Bits360’s suggestion of adding r.TonemapperFilm=0 to that same ini file, same section. But for my 2D project I had to also set my camera’s Post Process exposure min and max brightness to 2 in order to get the look I wanted. Doing this the textures are very close. Hardly distinguishable.