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

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.