What is the best ACES workflow for VFX and more

Hi

So i have been spending some time and looking into color spaces and ACES and i feel like i’m on the right path but there seems to be some things that are unclear to me and so i thought i would make a post, explain my mission and my troubles so maybe somebody with knowledge could shine some light my way.

I work for a small software company called Tenklabs, we make Kodon, which for the moment is a 3D modeling software that allows you to sculpt and model in VR.

My background is as a CG generalist Artist, and my main goal in the company is to ensure that we create a user friendly and highly professional workflow in Kodon.

Kodon is mostly developed from the ground up, however we do use Unity as a baseline to easily connect to the vr headsets and use their shader and lightning systems. Which has been a quick way to get a viable product up and running. However we might be looking to move a way from unity and just do it all ourselves.

I had some previous knowledge of color space and the linear workflow, but i never really dug in deep. I just knew that for compositing and cg work you would need to work with linear color and then output to whatever color space the content was intended to be displayed in.

Now that, that’s out of the way let me get down to my issues.

I have 3 goals with my research into ACES

  1. Learn the correct ways to work with CG in ACES from a VFX standpoint.

  2. Figure out how to apply that knowledge to our current situation (with using unity)

  3. Learn how to start implementing ACES colorspace directly into our render pipeline.

For goal number one, I’m at the point where i render with Vray or Octane for 3ds Max and i want to compose my shots or just color grade them with Photoshop in ACES.

So Octane does not support ACES out of the box, And neither does 3ds Max for some reason. And so the closest thing to ACES i can get from there is a 32bit Linear .exr file.

Vray “supports” aces however it is just a VFB display transform, it doesn’t actually render in ACES as far as i understand, Because when i export my files they are all just raw 32bit Linear .exr files, just like Octane.

Now as for Photoshop i have downloaded the OCIO config file for ACES and managed to get some semblance of an ACES workflow by importing the raw file from VRay. Displaying it with the Linear sRGB ICC profile, And creating an ACEScg LUT to apply as an adjustment layer on top of the image. Now although this gets me close it is still slightly off from the ACEScg display transform that i can see in the Vray VFB.

Importing my raw files into Davinci Resolve allows me to work in ACES directly but it doesn’t support ACEScg, only ACEScc and ACEScct and it is not great for still images.

So i feel a bit stuck and lost in as to how can i render directly in ACES colorspace and how can i edit those shots after, be they stills or video.

I have looked around for different solutions but there are so many contradictions. And different “hack” solutions that i’m not sure if i’m doing something wrong if it is just not ready yet.

For rendering: some people say work in ACEScg, but other say always work in ACES2065-1 and export in ACEScg.

As for goal number two, It obviously has to come after one but i have dipped my toe in,

Right now unity has a tonemapper named “ACES” however from what i can find in their documentation this is just a way to approximate the ACES look with a post process effect. none of the rendering work is done in ACES colors pace. It also seems that it looks nothing like ACEScg in the Vray VFB for example. So i’m a bit stumped as to what this actually is. Because there is no way to define the IDT or the ODT it seems like it just applies a look to the image.

It would be great if anybody has some info on actual ACES workflow with unity, textures, color picker etc,

Finally the third part is where i’m not the most well versed but its good for me to know about and to slightly understand,

which is how would we go about implementing ACES colorspace if we were to do it all on our own. This would be really useful knowledge for me as i could more easily explain the process to the programming team and have them get interested in the idea of having a complete ACES workflow in kodon.

Do we have to apply somewhere, or can we just get the code from a Git repository etc. This kind of info would be incredibly valuable for me.

To anybody coming with feedback or info, thank you so much.

Although this is a long long post, my main focus when it comes to ACES right now is getting together a workflow with a path tracing renderer, a photo editing solution, a compositing solution and a video editing solution.

If people share their most trusted VFX/CGI workflows with ACES i would be incredibly thankfull

2 Likes

Hi Emil
Thanks for your first post. Welcome to ACESCentral!

Hey thank you!,

After reading my post i can tell i had been stuck inside for too long and just really wanted to talk about ACES with somebody :smile:

Hi Emil!

Such an interesting post! I work with implementing an ACES pipeline at IKEA Communications AB in Älmhult and it would be interesting to talk with u about all of this. Send mail to kristian.krebs@inter.ikea.com and I will give u my phone number. You are Swedish I guess…

Kristian

1 Like

Hi Emil and ACES

I have had similar problems. You want the pipeline to work but it’s critical that everything aligns along the road. I use C4D and Octane (exr linear(sRGB)) with DaVinci Resolve/Fusion (ACES). I have no way of knowing for sure how Octane’s linear sRGB profile fits into ACES. You need to know what you are doing is right and not just guessing by eye if it looks ok. I looked into this but found it a combination of this and that; OpenEXR, Opencolor etc. I just looked now and saw that these have now been taken under on wing of the Academy which makes more sense. I am going to relook now to see if anything has improved in the workflow and if I can make more sense of it. Glad its not just me trying to get it right. Have a look at this website https://www.aswf.io

Hello Emil,
welcome to ACEScentral. I have been myself wondering the same questions as you are. I work in a CG studio in paris and have been studying ACES for cg for over a year. Hopefully, some of my insight might help you.

  • For rendering, the best rendering space is ACEScg. Some tests have been done by Thomas Mansencal and Anders Langlands to compare renders in ACEScg, Rec.709 and Spectral. Result is : ACEScg is overall the best rendering space as it is closer to Spectral Rendering. Here are the links.
  • We use ACES2065-1 for delivery to DI. The exr coming from our render engine are in ACEScg but the exr coming from Nuke are in ACES2065-1 as it is the recommended format for exchange between facilities.
  • I would never render in ACES2065-1 since Steve Agland from Animal Logic did those tests showing it was not an appropriate colorspace for rendering.
  • To use properly ACES, you need a software that can read an OCIO configuration like Maya, Nuke, Guerilla Render… Unfortunately Photoshop does not accept OCIO configs and this is why we need to use ICC profiles. Does Unity accept OCIO config ? It seems like it is not the case. We have the same issue with Substance where we have to use an exr as a display LUT to simulate the ACES ODT look.
  • Have you read those threads on ACEScentral ? About Photoshop and Full CG ACES workflow.
  • Finally, I have tried Resolve recently and i was able to import some ACEScg footage in it without any issue. I can look back for the configuration if you want.
  • Do you know about this article ? it may be helpful.

Hope that helps and welcome to the ACES community,
Chris

1 Like

Hi, thank you for your interest il send you an email this afternoon :smiley:

Yeah i cooked my solution down to almost that aswell.

Rendering with Octane or Vray in 3ds Max then comping in Fusion.

I save my renders as Linear EXRs and import them into Fusion as a ACEScg colorspace, somehow thats giving me the best result.

Hey, Dude Epic reply!

From what i have found Arnold in Maya and Guerilla are the only renders that actually render in ACES color space,

I am using Octane and Vray for the moment, Vray has an OCIO implementation in their VFB to see how your renders would look when converted to ACES,

So my most reliable method so far has been render old school linear EXR files and use Fusion to bring them into ACES.

Also when i import them into Fusion i choose ACEScg as the input colorspace, even thought its just a linear EXR raw from either octane or vray, But it seems to give me the correct result.

Do you know if ACEScg is the same as the internal linear colorspace that renderers use like octane and vray ?

Hello Emil,

when it comes to rendering primaries, we have to be extra careful otherwise this would lead to big misunderstanding. :wink:

From what i have found Arnold in Maya and Guerilla are the only renders that actually render in ACES color space,

Just to be sure, you are talking about ACEScg (AP1) colorspace, right ? We should never render in ACES (AP0). From a quick google search, it looks like Blender, Vray, Katana, 3DSMax do have OCIO support. It is quite common in CG softwares.

I would say that most of the CG artists render in ‘Linear - sRGB’. They generally say : I render in linear but it is only half of the information. Linear is not a colorspace, it is a transfer function. There is a brilliant article by Thomas Mansencal on this topic if you haven’t read it.

So the short answer is no. ACEScg is not the same as ‘linear’ colorspace. If you are not using any OCIO config, you are most likely rendering in ‘Linear - SRGB’, ‘linear’ being the transfer function and ‘sRGB’ being the primaries (or gamut).

Therefore you should import your exr in Nuke as a ‘Utility - Linear - sRGB’. I am surprised that importing the exr files as ‘ACEScg’ in Fusion do work for you if you are not rendering using any OCIO.

Let me know if I am not clear, I hope it helps.

Chris

I kinda knew all that but thank you for clarifying my terrible terminology.

VRay and 3Dsmax do support OCIO together but its just VFB view transform, it doesn’t actually render in ACEScg (AP1) At least as far as i have figured out.

Blender idk, their new update implements the filmic blender colorspace, but its not the same as ACEScg, and there is a way to get OCIO to work with it but its not id say “official” support. Besides im not about to go down the blender train just yet :stuck_out_tongue: Maybe in a year.

So in your opinion the color space output by the classic renderers is just sRGB with a linear curve?

I am using OCIO in fusion, just not in max

Yes, that is my opinion but I may be wrong as I haven’t used 3Dsmax in a long time.
I would say the best test is : do you see the same thing in Vray and Fusion ? if the answer is ‘yes’, then your workflow is good.

You can send me an exr privately if you want me to test it.
Funny thing, have you seen this topic on the forum ? It looks very similar to your question.

Chris

Yes the VFB in Vray and the output in fusion are identical, there are microscopic differences when i read the wave form but its incredibly difficult to tell, and impossible to tell when just viewing the image without the waveform.

Il send you some examples.

I did read that thread but it kinda concludes to using a hack for octane and the answer for Vray is not form somebody that uses vray, rather just somebody who know that the Vray VFB has a OCIO view transform that allows the artist to see what the Linear output would looks like once converted to ACEScg

I’m not 100% ceirtain but id say 99% that Vray renders in its internal colorspace and then outputs a linear sRGB like you said. However i’m slightly confused as to why it acts like an ACEScg colorspace when i import into fusion then, Maybe fusion is doing something weird, because i cannot get the same method to work with Nuke

Yes, that’s kinda weird. I have not used Fusion in a long time neither. If you send me an exr, could please provide as well a printscreen from vray and fusion ? So I can compare ?
Cheers !

V-Ray actually does support rendering directly into ACEScg now in V-RayNEXT update 2… at least in 3ds Max. You need to change the engine by writing a simple maxscript command.: (special thanks to Lele and Vlado over at the CGForums for this)

CPU
vr.options_rgbColorSpace = 2
GPU
vr.V_Ray_settings.options_rgbColorSpace = 2

My biggest issue right now is getting an EXR into Photoshop with ACES. I’m unable to succesfully match my viewport unless I use the OCIO plug-in. (Convert ACEScg to Rec709). But when you do this, you loose the full dynamic range of the image in 32-bit. I’ve had zero success otherwise tryign to generate an ICC or LUT to handle this instead.

Emil, thanks for asking this question, it saved me from having to write it myself as I have the same issues / questions as an Octane / Redshift / Houdini user :slight_smile:

From what I’ve been able to put together when you render out of Octane (or any engine that doesn’t render directly to ACEScg) in linear EXR you are rendering to the sRGB primaries not to the sRGB gamut (see this post which shed some light on the issue for me). This apparently allows the primaries to be remapped to any other space (ACEScg) with out loss, but there’s still a conversion and I’m assuming that the results would be different / more optimal if you were able to render directly to ACEScg and not have to convert?? This is obviously an interim question that wont be an issue once rendering direct is implemented into these engines.

Regarding Octane implementing ACES OCIO there is this one mention by Godorak (Octane developer) on the Octane forum stating that ACES/OCIO support is in progress, though it’s hard to say if this is anything more than a VFB like Redshift and when it will arrive is another question, but it’s good to see that it’s at least being considered.

It would be great to get some feedback in this post from anyone on the ACES team as I believe these fringe questions are important and not at all covered in the majority of the documentation out there. @Alexander_Forsythe maybe you could help shed some light on this one?

Also, regarding Photoshop, I don’t believe Adobe will formally support 32bit EXR editing or OCIO until there’s a need in the Instagram community for such tools :joy: Seriously though, take a look at Affinity Photo as they seem to be more active in directly supporting this workflow:
Affinity OpenColorIO Setup
Affinity Photo - OpenColorIO: baking colour space transforms

It would be great as well to hear if you guys have had any new insight regarding workflow since you wrote these posts.

Best / Travis

Hello Travis and welcome,

unless I miss out on something sRGB Gamut and sRGB primaries are the same thing (the triangle in the horseshoe aka the CIE diagram from 1931).

If you render in Linear - sRGB (Linear being the transfer function and sRGB being the gamut/primaries), yes you can convert to ACEScg directly into Nuke by importing your footage as Utility - Linear - sRGB.

What would be the advantage of rendering directly in ACEScg ? You get a more accurate GI (closer to spectral rendering) I detail all this stuff on my website :wink:

Most the information I collected comes from posts and articles by Thomas Mansencal. I have linked all the articles on my website as well if you want to have a read at the sources.

There is a post about Photoshop on the forum:

describing a few workflows. Although I haven’t been able to crack the ICC profile setup yet. For the moment, we convert our renders to ACEScc (logarithmic) to work in Photoshop. Not ideal but it is a workaround. This setup is also described on my website. :wink:

Hope that helps,

Chris

Hi Christophe,

Thanks for the clarification. I’m coming from the traditional integer side of the color profile world as a photographer who’s getting into CG. I’m still wrapping my head around the linear side of the equation. Thank you as well for writing your book on CG cinematography its really an amazing resource for those of us who are trying to learn the craft and quite generous of you to produce! I read the first two chapters and while it all makes sense for the most part, the difficult part is getting it working in actual production. I think it’s a price to be paid though for being on the cutting edge :slight_smile:

I’ve been experimenting with Affinity Photo trying to convert my stills as I can’t quite afford or justify a Nuke subscription currently, but am still having a little trouble figuring out how best to set things up properly for image editing. I know that converting my sRGB EXR image from Octane into ACEScg will change the look, but I’m not exactly sure what I’m looking for so it’s hard to tell if I’m doing it correctly. I have a post on the Affinity forum with all the details here but it’s probably only of interest if you use Affinity Photo.

Thanks for the link re the Photoshop implementation. I’ll take a look and see if it’s something I feel like tackling. If I get anything working I’ll let you know.

Best / Travis

Thanks for your comments ! Let me know if I can help furthermore !

@travisrogers I don’t think the Photoshop workflow will help you because it is for working with log encoded images, not linear.

For affinity (or any ocio software) you need to define the following:

  1. The working space (ACEScg)

  2. The input space (for a render ACEScg)

  3. the display space (sRGB if you are on a standard computer monitor)

  4. The output space (the color space you want to save the image in)

I watched the Affinity video here which covers #3 above (Device:ACES, View: sRGB). There’s another video that covers #4 above. One issue is that it appears that Affinity is assuming the working space is (sRGB primaries) scene linear. You may be able to change that with a OpenColorIO adjustment. You’ll want to go from Utility-Linear-sRGB to ACEScg