New filters for rendering ACES in Substance Painter

(Jose L.) #1

Actually a filter to convert textures to ACEScg and a lut to convert ACEScg render view to ACES sRGB (in my lut release).
I also made another filter called PBR_SmartFit which helps on the inverse RRT conversion so values above 0.81 are not lost.
The filters are pretty straight forward with some settings exposed for linear or sRGB gamma input/output since Substance Designer unlike Painter defaults to sRGB. Substance Designer also lacks lut support so no option to render in ACES with Substance Designer.
*The ACEScg filter is based on the work of Stephen Hill (@self_shadow)

There’s only a gist when using “Output - sRGB” as IDT which I will now explain.
If you followed this thread a common issue when using “Output - sRGB” as IDT is HDR values. Source pure white 1.0 will remap to value of about 16.29, and target pure white corresponds now to value 0.81 in source losing 1/5 of texture information (textures should be in the 0-1 range, or less for PBR). A common recommendation and a standard in other painting programs is to use “Utility - sRGB - Texture” as IDT, this won’t apply an inverse RRT and hence after the forward RRT our images will look darker than normal. Depending on how you author your maps working in “Utility - sRGB - Texture” is fine, like when you create your albedo maps from scratch using ACES without relying on photographs or other media so it’s also available as an option in the filters. But nowadays in look development it’s not uncommon to mix textures from photographs, other non-ACES managed painting applications, or using library materials authored in sRGB.
This force us to stick to “Output - sRGB” for faithful tonal and color reproduction. To deal with the HDR values I created an special setting in PBR_SmartFit to keep all information within PBR legal range.

PBR_SmartFit is a filter to convert your source albedo maps to PBR legal range (0.0134-0.871 linear float as per Substance guidelines) in the smartest way, retaining source colorimetry, perceptual middle gray and full range details, unlike the internal “PBR Safe Albedo Color” which performs a range clamp on the out-of-PBR values. It tries to be faithful to source while making it PBR compliant. As I explained above, there’s an special option called “PBR for ACES”, when set to “Output - sRGB” what it does is create a special PBR range adapted to the inverse RRT which in turn maps said values to target PBR range while retaining source colorimetry, perceptual middle gray and full range details.
Following some comparisons rendering with Arnold for Maya using syntheticChart.01_ODT.Academy.sRGB_100nits_dim

Here I made a test asset to evaluate different materials under an ACES workflow. The default for Substance Painter is sRGB color space without any tonemapper. Following is ACESFilm tonemapper which like Brian Leleux ACES lut render the image too dark due to the lack of inverse RRT for the textures. Raising the gamma can patch this side effect but the premise is wrong to start with; bad environment exposure, contrasty textures, wrong light interaction -reflections, color bleed-… The last one is using ACEScg textures with the “ACESFilm - ACEScg” lut. Now environment has proper exposure at default gamma, color bleeding is more pronounced and overall light interaction is more correct.

The image below is after conversion of the HDRI assumed to be sRGB into ACEScg space. We normally don’t know what primaries the HDRIs were saved in because it is not normally specified but visual analysis can gives us a hint. Some use sRGB, others AdobeRGB and the ideal ones RAW, for which you should use rawtoaces for conversion of sensor spectral data.

More examples with different materials and environments.


Free download with instructions and more images on my ArtStation post.

(Karas) #2

As far as i know HDR map need to convert to ACES
because the color Primary changed, otherwise it will cause some saturate issues.

(Jose L.) #3

It depends on how you create the HDR image. I was researching on that the last day because how unsaturated and dull environment HDRIs generally are when preparing the presentation images.

The marble ball render on the left shows a dull EXR on the magic hour, so I knew something was off. Later I found that many OpenEXR HDRIs due to some color clipping are authored in AdobeRGB.
Others are directly written in RAW format and this is the recommended format in Arnold documentation and other programs. So I decided to stick to RAW, this matches Mari’s color space aliases and the gamut better matches to AdobeRGB (rather than sRGB). Since so few HDR authoring programs make use of the OpenEXR chromaticities attribute we can only assume. I decided to err on the saturated side, after all the HDRIs are heavily color edited (saturation, temperature, sharpness) to look nice. Still if you know your HDRI is sRGB you can still convert to ACEScg and load it in Substance Painter.
If the description is confusing I might change it after suggestions.

(Karas) #4

em… you are right , i thought all the HDRI maps were in sRGB primaries ,since most DCC and renderer said set the colorspace to Linear/RAW( no gamma correction ) for the HDR map and sRGB for color textures, i thought its stay in the same sRGB primaries.