For the Substance Painter using only a lut (ACESFilm 2.0) is not enough. It is a hack, sort of. The proper way to do it is with the “ACESFilm - ACEScg” lut AND the ACEScg filter. By doing so you are properly converting Albedo to ACEScg with the filter and previewing in sRGB ODT with the lut, think of them as IDT (ACEScg filter), ODT (ACEScg lut).
Let me explain (I should probably record a video).
Let’s take Mari as an example. If you import an sRGB texture (photo, scan, etc), and use the default “Utility - sRGB - Texture”, it will paint/project darker than how you authored it, this is because “Utility - sRGB - Texture” doesn’t do an inverse RRT transform. Since your viewing transform includes an RRT everything will look darker.
The solution(?) is commonly said to be “Output - sRGB” used as IDT, this actually does an inverse RRT, hence when you apply the viewing transform the IDT and ODT cancel and you see what you authored. Now doing an inverse RRT (exponential function) presents a problem, you get an ACEScg albedo texture that is HDR, with values going as high as 16.29 (illegal albedo range, breaks PBR workflow), this will typically means that only values within 0-1 get validated (0-0.81 in source) losing 20% of texture information. We need ACEScg textures that represent the source material and at the same time are within 0-1 range, my solution is the PBR SmartFit filter.
While 0-1 is a valid texture range it still is an illegal PBR range, so with the PBR SmartFit filter (using a special mode) we can output a PBR range that is valid for the inverse RRT.
To sum it up, load both filters into Substance Painter and (recommended) place PBR SmartFit into the top stack of EACH material. Then place the ACEScg filter onto the top stack of ALL your materials. Check my second image for settings.
Following, load the “ACESFilm - ACEScg” lut, and in camera tonemapping use the “log” function transform. You are set.
To be on the safe side I also set Base Color, in “TEXTURE SET SETTINGS” panel to RGB32F.
Remember the exported Albedo maps from Substance Painter are sRGB gamma encoded, linearize to bring it back to ACEScg spec.
For a faster workflow, publish a “Convert to Linear” filter from Substance Designer and stack it on top of the ACEScg filter so you directly export linear within Painter.
The filters also work in Substance Designer but you can’t get a preview of your material since Substance Designer lacks lut support. Still you can validate PBR ranges and export your materials in ACEScg.
*Keep in mind, every color component of the render should be converted to ACEScg, this includes emission color, and HDRI environment maps. My filters are strictly for albedo. In a proper pipeline the HDRIs should also be converted to ACEScg, identify the source color space and convert to ACEScg in a third application, this way reflections and light interaction happen in ACEScg space.
Give me a day for the P3-D60 lut. If you have any questions don’t hesitate.