URP HDR Calibration

Hi, I’m having an awful time calibrating HDR-values in URP when Aces tonemapping is on.

First. On a SDR-monitor, tweaked “SDR-values” on materials and lights looks “good”.

With tonemapping on in HDR, I keep getting dimmer than expected lights and effects. Without tonemapper I can easily crank the brightness up and it also looks more correct with darker shadows, brighter light and more vivid colors. It’s as if URP’s tonemapper cuts max brightness to what… 300nits for example? It’s like I have to do the choice of either having correct colors or a bright screen. Isn’t tonemapper necessary for a HDR-scene?

Also: How the hell do I calibrate a scene for proper HDR?

As part of our optimization round, found that ACES tonemapping also eats up quite a bit of performance on low end machines, so I just skipped it entirely and just very carefully customized a LUT file instead. I don’t have a HDR1000 monitor to test how it looks though, just a 350.

For our workflow and look, ACES tone mapping is absolutely a must, and we use it even on low powered devices (Switch and modern mobile platforms).

If you use tone mapping, you then need to properly calibrate the scene with the right post process value. So, start with ACES and then experiment with all the other different values + LUT to achieve the look that you want. Yep, it’s a ton of work.

Also: don’t mistake the HDR pipeline in URP with actual HDR output. URP doesn’t’ support actual HDR output. The final output will always be in SDR.
Pipeline aside, properly supporting HDR output is a totally different beast and requires huge investments to achieve the proper look both in SDR and HDR. It’s basically something that only AA and AAA games can do right now.

Because I’ve been optimizing for ultra low end hardware as well, I’ve been trying to squeeze every drop of performance out of Unity. Aside from ACES tone mapping automatically looking much better easier, is there any difference in the actual output if I use curves and hue settings to emulate the look of the ACES result via a single LUT in your experience? I’ve tried to find out the answer to this but haven’t found it yet.

In our experience you absolutely need some sort of tone mapping if you’re using HDR to bring the output in the proper SDR range.
For us ACES is giving the best result, and we then proceed with LUT, contrast, saturation and so on.

You can probably try to do it without tone mapping but in our experience it’s very difficult to work without it in HDR and get proper and constant result.

About performances: we’re targeting 30fps and optimizing aggressively. In our experience tone mapping is not that expensive, since we’re using a ton of more expensive stuff (bloom, SSAO, DoF…) on very heavy scenes.
The best thing to do on mobile and low powered hardware is… dropping the resolution. You can go as low as 60% res on mobile without noticing.
The boost is absolutely huge.

Thanks for the response. We’re targeting 60fps with ultra low end hardware so we’re squeezing every last drop of performance out. We still have to greatly lower the tris count, so can see if there’s enough performance budget at the end for ACES. We already use FrameX optimizer asset to auto downgrade rez and quality, works very well when used together with AMD fidelityFX actually.

Just to be clear. Unity does support HDR monitor output on built-in renderer and on newest HDRP version but not with URP.

There’s a card for this on URP product board under “consideration”: https://portal.productboard.com/unity/1-unity-platform-rendering-visual-effects/c/220-high-dynamic-range-display-output meaning that according to the product board it’s not atm actively being worked on.

Are you using FidelityFX on mobile? How is your experience performance wise?
We would love to use it but I see it’s supported only on the latest version of URP so we need to upgrade.

There isn’t any noticeable performance impact when I was testing it, it just makes it look better instead of bilinear. The sub 1.0 render scale affects the performance of course, but the FidelityFX itself just makes it look more crisp.

So what does that mean for using ACES with URP? That it is of lesser benefit than using it in built-in and HDRP?

You can’t draw such conclusions from that. In short ACES is just tonemapper option given to you.

https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/manual/post-processing-tonemapping.html

For the ref, “neutral” is basically implementation of Hable Tonemapping. Most obvious difference between ACES and Neutral is that ACES treats bright sources colors differently, they start to look more white the higher the brightness goes where neutral still keeps the colors somewhat intact. Some people prefer the filmic look of ACES so it’s offered there as an option.

I see, I purposely decide between hue99 or hue100 on individual HDR particle systems depending on which look I want for the bright glows, using just a custom LUT and no ACES tonemapping. So I’m not having any trouble not using ACES at the moment. My only concern was whether I am missing out on a lot of quality since I don’t have a HDR1000 monitor to test with.