Alpha Channel Interpretation Issues in DaVinci Resolve with ACES Workflow

Hello everyone,

I’m reaching out after thoroughly reviewing a lot of documentation on this topic, though my understanding of alpha management in Resolve when working in ACEScc remains somewhat incomplete.

I regularly export plates with alpha channels (premultiplied or straight) from After Effects to various software packages, including Resolve. Outside of ACES workflows, I’ve never encountered issues beyond the standard " change alpha mode" parameter adjustments.

However, we’re experiencing a more complex issue on our current VFX configuration: alpha channels never interpret correctly, regardless of export method—whether embedded in EXRs or exported separately as black and white mattes. The alpha consistently appears too weak in intermediate values, as if a curve applied in After Effects has been lost in translation. This affects all layers with alpha channels; none behave as expected.

Interestingly, these same techniques work perfectly when I import my After Effects-exported EXRs back into After Effects—everything functions flawlessly despite using ACEScg.
When I tested in Resolve and switched back to yRGB, it works! My EXR files (exported in ACES2065-1) composite correctly when layered. I’m using a reference composite from After Effects to verify expected behavior, and in yRGB mode, it matches perfectly. However, as soon as I return to ACES, the match fails.

I performed some additional tests :

  • Merging in Fusion for more control: Still doesn’t match the reference, and defeats the purpose of working with layers since proper compositing requires merging within the Fusion Clip
  • Modifying EXR max alpha values using MagickImage command-line utility (following questionable ChatGPT advice)

After reading various threads, I’m concluding that ACES in Resolve, by default, doesn’t correctly interpret alpha channels—whether premultiplied or straight, in 16 or 32-bit EXRs, PNG sequences, or ProRes files, across ACEScc, ACEScg, or AP0 color spaces.

I really need your assistance to understand what’s going wrong here! Has anyone encountered similar alpha interpretation issues when working with ACES in Resolve? Are there specific settings or workflows that address this problem?

Thank you in advance—hoping someone has the solution to this apparently thorny issue.

Hey Robin,

Could you explain slightly more? Do you mean just stacking rendered clips on top of each other in a timeline or comping them back together in ReFusion?

Do you mean ACEScc only or also ACEScct? Does it also break in RCM with DaVinciWideGamut preset for example? (just as a test, I know it’s not ACES)

We personally never use Resolve in a color managed mode because of many mechanical and practical hurdles both in ACES and RCM.

Would working in yRGB not work better for you? All necessary ACES transformation can be done with the ACES Transform node and you even have OCIO support now in edit/color pages should you use custom ACES OCIO configs. yRGB with the right set up can work just as fine as color managed, the only downside is your viewers aren’t super useful if displaying source media.

If you have an example set of exr frames non client related that illustrate the issue maybe some of us here can have a closer look at it.

Hi Shebanjah, thanks for your response,

Sure, let met explain in details, with some examples !

I cannot embed more than one media so I have to share you everything in a Notion page so you’ll have all the informations !

Edit, I cannot share links too … Annoying. Let me know I’ll share with you the notion page with my problems and my workaround.

Hope this will help you understand my issue, and maybe my workaround will help other people !

Best,

Robin

New users cannot post links immediately. You could upload files to a sharing site like Dropbox and post the link with some spaces in it perhaps.

Good idea !

Here is the link of the Notion page explaining my issue :

Let me know what you think about this

The link works. I haven’t fully wrapped my head around it yet or did tests on my own but if your intent is to provide control for grading I believe there may also be options where you provide external mattes to the color page or use multiple media outs in ReFusion to feed the mattes from there. In the context of color corrections you only need the mask data and the glow or other composite elements could be baked into the full beauty composited plate.

A bit funky vid with text to speech voice but shows it well I think.

It’s exactly what I tried before creating the “secret technique” part of my documentation, the thing is, because it’s in ACES, the alpha output of ReFusion are breaking in the same exact way as the other alphas. It seems to be broke everywhere outside of Fusion itself.

The bridge between Fusion Media Output and Color Source seems to be the exact moment where the shift is done, and the alpha breaks to create something off.

I’ll watch completely the video you sent me (thanks !) but I thinks it’s not in an ACES projet. I’ll give it a try, we never know.

So yes, I watched the video and it’s exactly what I did in the beginning : using the Media Output to send Fusion informations (rgb and alpha) to Color Page.

But it does break in ACES as well as the rest. Si it’s unfortunately not relevant in this specific usecase.
However it’s a great technique if you work on an yRGB project for example.

I see, bummer. Could it be that the log working space of the color page has something to do with it. Resolve is very weird in the way they implemented ACES as you need to pick the ‘style’ of ACES color management which is only ACEScc or ACEScct rather than decide yourself what your working space is. Fusion in ACES is hard coded to be ACEScg.

By “the rest” do you mean in RCM as well? If that’s the case I’d be curious if it’s still breaking if you choose a linear timeline working space. So for example, pick RCM with the DWG/Intermediate preset, switch it to custom and make it DWG/Linear instead. Also make sure Disable tone mapping for fusion compositions is enabled.

I think if it does work then there’s something messy going on with how Resolve takes the data from linear to the log timeline working space which would be on them to address.

1 Like

I tried many custom settings in the RCM, and nothing works when my IDT is ACES.
It feels like ACES in Resolve bypass alpha management, and makes it behave weirdly.

Is it unsolvable ? :cry:

Hello ! We managed to have a “custom” solution for this alpha channel interpretation problem in Resolve ACES. I want to share it here, so other people searching won’t struggle has much as we did.

:warning: Warning : the solution is not perfect, but let you control the alpha gamma properly inside the Color Page, so it makes the color grading of the VFX compositing easier anyway.

First of all, I got my EXR from AE, in 16 bit, to ACES 2065-1, and the most important, with alpha channel in straight mode.
Here is a trick to render straight alpha from OpenEXR inside After Effects (not available per default) : copy/paste this code inside a text file and name it “EXR.jsx” for example, the name does not matter, only the extension, then import it as a script inside your AE.

var section = "Misc Section";
var pref = "Allow writing straight alpha into EXR";
var type = PREFType.PREF_Type_MACHINE_INDEPENDENT;

if(app.preferences.havePref(section, pref, type))
{
	if(app.preferences.getPrefAsBool(section, pref, type))
	{
		alert("EXR straight alpha pref already set to TRUE.");
	}
	else
	{
		alert("EXR straight alpha pref was set to FALSE. Setting to TRUE.");
		
		app.preferences.savePrefAsBool(section, pref, true, type);
	}
}
else
{
	alert("EXR straight alpha pref not set. Setting to TRUE.");
	
	app.preferences.savePrefAsBool(section, pref, true, type);
}

Then you’ll have access to Straight option in the After Effects rendering settings for OpenEXR rgba :dizzy:

Now we want to import them inside Resolve. For each rgba EXR, you’ll have to duplicate it, and rename one “color”, and the other “alpha”. Change the alpha mode of the “color” to “Ignore” and to “Straight” for the “alpha” one. So we have two same sources but one is only color and the other has alpha correctly set.

If you want you can render mattes too, as alpha only values from After Effects, in a ProRes for example, but remember After export alpha mattes as rgb values, so we’ll use it differently later on.

You can now create a Fusion clip, and drag’n’drop your different layers color + rgb. Don’t forger to put your background layer too. Create for each a MediaOut, which we’ll be pointed to the Source Color. They have an individual index so you can manage them as you like.

We’ll need to convert the straight alpha to rgb value to control it exactly in the Color Page (which is what we want from the beginning : have the most control over our compositing inside the Color Page, so the colorist can easily change everything)

For the conversion, we’ll use a ChannelBoolean node, set to this :


Basically, we’re taking the alpha value to rgb, and replace the alpha to white so it’s fully opaque.

For the example, I have 4 layers :

  • my background, which is EXR rgb only
  • a matte for the street lamp, rgb only from the AE render directly, but representing alpha values
  • my glow, color only EXR
  • the alpha of the glow, EXR rgba, alpha mode straight, converted to rgb values

So now, we can “Add Source” inside the Color Page so we get all the values from Fusion to Color Page, and create the compositing there with “Layer Node”, that merge your different nodes by alpha values.

And now, here is the trick to have the control over our alpha : you can get your rgb values of you alpha, and tweak them with differents nodes (CST cct>sRGB Line seems to have good contrast for beginning, and I use a log curve in another node after it to keep the low values of my alpha, and play with this curve to make it work visually)


In this example, the top source is my background color, I use as my background as well in the layer merge node, and I use it as well to feed the color to my layer above. My second source is my rgb alpha for the lamp, I tweak it with CST and curve then plug it as RGB to the alpha key of my “lamp node”, so now I can have the custom alpha I made working in ACES color nodes.


Here is the complete node system, with my third source being the color data of the glow, which will be in the top of everything because it’s the last input in the layer merge node. And my fourth source is it’s alpha in rgb value, I tweak them as well and use it as the glow key input.

And here we are : the colorist as complete control over our compositing with alpha and rgb values they can interact with easily !

Hope it will help some VFX artists from AE to Davinci Resolve, and maybe some of you will find an exact method to change exactly the rgb tweak of the alpha to be a complete match with the non-ACES alpha interpretation.

Best,

Robin

1 Like