Copy link to clipboard
Copied
Sorry for the lengthy post but I'm trying to be descriptive and it's a bit difficult to describe the workflow on this tricky subject matter. In the latest version of Substance Painter I know there's the ability to color manage the viewport using an OCIO config. But I'm finding it confusing to be able to use an ACES workflow from SP to UE4.
Ideally, I want to be able to work in SP with ACES workflow and ACES-sRGB output transform enabled then have that look exactly the same in UE4.27.2
The way I've been able to get the closest look from SP to UE4, is to use an ACES workflow in SP but to disable the color management so I'm viewing the linear/ACEScg colorspace. I then do my surfacing without viewing the typical ACES-sRGB transform, or whatever output transform is applicable to you.
It seems like Unreal is in linear color space and I have no way to manage a texture's color space, except for the standard sRGB or linear workflow. When attempting to view ACES-sRGB as my monitor's output transform, I don't seem to see that option. I'm using ACES 1.2 OCIO config from here:
https://github.com/colour-science/OpenColorIO-Configs/tree/feature/aces-1.2-config
I'm using the same ACES config from above in Substance Painter to ensure consistency.
I have set up an OCIO actor and added some colorspace transforms I think would make consistent results but nothing seems to work as I would expect. Not sure if there's a specific working space transform and output transform I should be using? When trying to apply my transforms in the viewport, I only see source color profile and output color profile listed in documentation. I assume the source color profile option in the viewport is actually the working space transform that UE4 is natively using?
My current assumption is that we don't have much color management options in UE4 for working space transforms and instead this OCIO implementation is catered towards virtual productions needing OCIO for composure purposes. Specifically, that while we can correctly ingest media color space by indicating the correct input transform, we can't specify our working colorspace. Similarly we can export output colorspace so this allows us to work in Resolve or other such post color grading software.
Any guideance on this subject would be greatly appreciated. Apologies for any incorrect terminology as I'm still learning to apply and explain OCIO/ACES workflow.
Thanks,
Rob
Copy link to clipboard
Copied
The way I've been able to get the closest look from SP to UE4, is to use an ACES workflow in SP but to disable the color management so I'm viewing the linear/ACEScg colorspace. I then do my surfacing without viewing the typical ACES-sRGB transform.
You don't want to do this. It's really important that you view your work through the ACES tone mapper.
It seems like Unreal is in linear color space and I have no way to manage a texture's color space, except for the standard sRGB or linear workflow. When attempting to view ACES-sRGB as my monitor's output transform, I don't seem to see that option.
Unreal uses the ACES tone mapper for an sRGB display by default (as of v4.25 or so). The working color space of Unreal is linear Rec709/sRGB, but it converts it to ACEScg when it applies the ACES tone mapper. So you don't necessarily need to use OCIO in Unreal at all as long as you are using a standard ACES sRGB display for viewing. That said, the config you are using should work. You just need to enable it in the Unreal viewport by clicking on the "lit" button.
I have set up an OCIO actor and added some colorspace transforms I think would make consistent results but nothing seems to work as I would expect. Not sure if there's a specific working space transform and output transform I should be using? When trying to apply my transforms in the viewport, I only see source color profile and output color profile listed in documentation. I assume the source color profile option in the viewport is actually the working space transform that UE4 is natively using?
Yes. For viewing you need to go from Utility - linear Rec709 (the working space of Unreal) to Output - sRGB so these would be the color space transforms you would need.
My current assumption is that we don't have much color management options in UE4 for working space transforms and instead this OCIO implementation is catered towards virtual productions needing OCIO for composure purposes.
Yes. Using OCIO in Unreal seems pretty laborious currently. I'm tending to think it's easier to just keep it as it is with its native ACES tone mapper. The only difference then is that Unreal adds a gain of 1.45
Specifically, that while we can correctly ingest media color space by indicating the correct input transform, we can't specify our working colorspace.
I think it may be possible to change the working space in Unreal v5+ although I haven't figured out how yet. However, since most Unreal assets are currently in linear sRGB these would all need to be converted, so it may not be worth the effort. This of course depends on your asset pipeline.
Similarly we can export output colorspace so this allows us to work in Resolve or other such post color grading software.
True. You can also just read in Unreal as linear Rec709 with a linear gain of 1.45
Here's OCIO v2 color space for that:
- !<ColorSpace>
name: Unreal Engine
family: Texture Input
equalitygroup: ""
bitdepth: 32f
description: |
Unreal Engine Scene-linear Rec.709 or sRGB primaries to ACES primaries with gain boost of 1.45
isdata: false
encoding: scene-linear
to_reference: !<GroupTransform>
children:
- !<MatrixTransform> {matrix: [ 0.439632981919, 0.382988698152, 0.177378319929, 0, 0.089776442959, 0.813439428749, 0.096784128292, 0, 0.017541170383, 0.111546553302, 0.870912276314, 0, 0, 0, 0, 1 ]}
- !<CDLTransform> {slope: [1.45, 1.45, 1.45], offset: [0.0, 0.0, 0.0], power: [1.0, 1.0, 1.0]}