ACES & Photoshop friendly workflows

Tags: #<Tag:0x00007f3c64c263c8> #<Tag:0x00007f3c64c26260> #<Tag:0x00007f3c64c25928>

(Alex Fry) #1

I wanted to start a bit of discussion about dealing with Photoshop in the context of an ACES pipeline.

A number of workflows I’ve seen/tried revolve around giving Photoshop log data of one flavour or another, and using ICC soft proof profiles, or giving it linear data and using LUT based adjustment layers for viewing (with the additional limitations of working in 32bit mode).

Whilst these work OK, my feeling is that going down that road means you’re fighting the way Photoshop wants to work. Photoshop always seems happiest when it’s working with normalized display referred data that’s managed by the ICC system.

So keeping this in mind, we moved to a setup where we take our ACES data, apply an output transform, work in Photoshop, then invert that transform when we want to move back to the rest of the pipe.

Initally we tried just using P3D60, which is our standard display space, but this causes predictable issues at the edge of the P3 gamut, so we made a custom ODT that targets an imaginary display with AP1 primaries, D60 whitepoint, and a gamma of 2.6. Roughly approximating our display space, but with extra elbow room to protect ACEScg level saturation.

We then created a synthetic ICC profile describing this space, and assigned it to our images.

The user can then just open them in Photoshop and work as normal. If they’re going back to EXR land afterward, we have adjustment LUT they can apply before saving out the EXR. Or if they’re going elsewhere (like a marketing delivery) they can just use normal PS colour management to get there (Adobe98 tif for example).

Values above 16.3 in ACEScg are clipped (Good compared to Cineon curve workflows which we’ve used in the past, not as good as ACEScc)
Requires a conversion step coming in and out.

All Photoshop tools available (unlike 32bit mode)
Moving data between other color managed documents and applications works as expected (from the perspective of a Photoshop user)
Normal ICC Colour operations all work as expected (So exporting Adobe98 or sRGB images for marketing works normally)
Colour swatches behave predictably.
Looks normal in other more basic image viewing applications.
Photoshop users actually like it.

Now, there are some bits in here that could go either way.
We based our custom AP1 Display ODT on the dark surround variation, but there is a good case to be made for this to be a dim surround ODT.

Also there isn’t a great story here for HDR, whilst a decent amount of information is packed in, it’s still clipping at 694nits in PQ. I’m not really sure what the move is going to be here until we start getting HDR aware colour management on the PS side.

I’ve attached a sample PNG with the described profile attached, the profile on it’s own, and the example CTL transforms (which can be included in an OCIO config bake).

I’d be curious to know if anyone else has gone down a similar road, or other approaches people are currently taking.

Prototype CTL code and ICC profile:

2K example image:

(Edit: deleted the embedded example image as the ACESCentral CMS was stripping the ICC profile)

(Andrew) #2

Hi Alex,

Have you not tried: OCIO for Photoshop?

(Alex Fry) #3

I haven’t actually.

But I’ve used the After Effect version, and not had much fun with it. It was slow, and confused the hell ot of our regular AE users.

(Dudley Birch) #4

Thanks Alex, I hope this thread can lend some clarity to the workflow.
I was the DMP lead working with Alex during the implementation of this display referred workflow and I must say at first I was extremely nervous. “What about the golden rule about never adjusting the pixels?” I bleated. ‘Baking in’ the transforms seemed heavy handed and…barbaric!
My fears were put to rest however once we got the round trip working and it became obvious there was a 1-1 colour match. The 16 stop limitation was not a problem, giving more than enough perceptual range…any very bright shots could be stopped down in nuke before export and then popped back after the round trip as we would normally anyway.
Photoshop works as if you are working in Srgb, colour swatches are normalised, incoming images can be converted on the fly, images are converted confidently.
The bonus was, the display referred .icc profile, once installed meant that all of my other software could display it as well. I used it to write out from Lightroom, you could view the images as you would any srgb image in Bridge, ACES became invisible.

That being said, having left the security of my former employment, I will be back with some forehead slapping questions as to how to set this up!

(Abraham Schneider) #5

The whole thing sounds like an interesting way to do matte painting, etc. I’m not really happy with the ‘log’ approach yet. So having some kind of display refered working space for PS would be nice to test.

Stupid question: how would I ‘convert’ the CTL code to something I could embed into a customized ACES config? I’m not that much into the development side of ACES/OCIO but would really like to test this workflow.

Thanks, Abraham

(Alex Fry) #6

Hey Abraham

You should be able to add them to the aces ctl directory structure, then bake a new OCIO config using the generation scripts found in the python folders in HP’s github:

(Charles A Taylor) #7

I’m curious about this approach, but the downloads do not appear to be working. Are you still working this way? Would it be possible to upload them somewhere else?

(Charles A Taylor) #8

Another thought. Have you had any issues with recombining the layers to match what you see in PS? If PS is merging in your custom gamma 2.6 space, how do you get the same results in Nuke merging in linear space?

(Christophe Brejon) #9

Hi there, just wanted to share with you an ACES workflow we came with at ENSI school in France.

You will need two plug-ins to make it work:

OCIO for photshop

1- In Guerilla, we do an ACEScg render of a skylight. (viewer in REC.709 ACES)

2- Then you import this ACEScg exr linear render in Photoshop:
This box will show up if you have installed the plug-in exr-io. Just click ‘open’.

3- The render will show like this, due to srgb icc profile in photoshop.

4- Then we apply an ACEScg Ocio profile to the render with the ocio plugin.
It will look like this:

5- Then we convert the render to 16bits. So ,we can paint and have access to paint tools.
The render should not change at all.

6- After this, I will create a ‘levels’ adjustment layer with 0,45 value to undo the srgb icc profile of Photoshop.

The render looks exactly like in Guerilla (except to the slight difference between srgb icc and gamma correction)

7- Then we save the exr file with exr-io.

8- Finally we can import it in Nuke as ‘Output - Rec.709’ to make it match the ACEScg exr render originally from Guerilla.

9- You will just need to write as an ACEScg exr to finish the workflow and use the exr as an envlight.

I hope that makes sense and I would be curious to know what you guys think about this setup.

Many thanks,

Chris and Quentin

(Nick Shaw) #10

I may be misunderstanding, but it seems like a rather roundabout way of simply baking in a Rec.709 Output Transform into the image, and then inverting it out when you get back to Nuke.

It’s similar in principle to @alexfry’s method at the start of this thread, but involves more steps, and is potentially more lossy as it uses a standard Output Transform, targeting the narrow Rec.709 gamut, where Alex’s method uses a custom wider gamut OT tailored to the needs of the process. Also, your method requires Photoshop to have two extra plugins installed, but with Alex’s method, once the image has been tagged with the custom ICC profile it can be opened in any copy of Photoshop, or any other ICC aware application.

I hope I don’t sound too negative, and maybe I’ve misunderstood what you are doing.

(Christophe Brejon) #11

Not at all Nick! Thanks for your comment! :grinning: I have to say I don’t have the technical knowledge to replicate Alex’s workflow. This is why we came this solution as it is less technical (if that makes sense). I have never created a custom ODT nor created a synthetic ICC profile unfortunately… :disappointed_relieved: Thanks for your insight!