AP0 vs AP1 Color Conversion Questions

Despite two unfortunate threads on the topic of AP0 and AP1, the underlying question does warrant some further understanding for those of us who are interested or asked to deliver files in AP0 while working in AP1.

So I spent some time digging through ACES information to find verifiable information and condense this here for everyone’s benefit (not via AI, but via human processing). Everything is linked to the source in authoritative documents.

Here’s what I found:

ACES2065-1 “is the only interchange format, and all ACES content should be converted to ACES206t-1 before being sent to other facilities”. Source. This explains the premise for the use of AP0 in files.

ACEScg is the smaller working space with AP1 primaries. It’s purpose comes from the fact that certain (not enumerated) CGI processes use optimizations which do not work well in very wide gamut primaries such as AP0. Source.

See also note in same source, which states “ACES2065-1 is not recommended for rendering.” I read this as pertaining specifically to CG renders, not image manipulation. Source - just above ‘Why ACEScg’

The additional purpose of AP1 was to make color grading easier by restricting the color space to colors that are likely to occur in images, rather than colors that are theoretically possible. Source

Or as stated here: “Using the AP1 primaries, ACEScg provides a color gamut wide enough to represent all of Pointer’s Gamut and the majority of visible colors, without requiring negative values and without dedicating a significant portion of the gamut to implausible colors.” Source

All these notes show case the pitfalls of actually working with your tools in AP0, rather than AP1, leading to the conclusion that AP1 is much preferred if not required for applying operations to images.

These may also apply to not using algorithms like keyers which may otherwise dedicate part of the available precision to colors which are implausible, and with nothing gained.

Here is a detailed description of a scenario where negative numbers can occur due to the size of AP0, which exceeds the size of the CIE-1931 locus, by the nature of building the encompassing primary triangle.

In CG operations it’s possible that repeated reflective computations of a color yield results that when converted back to AP1 yield negative values. Source This issue occurs because of AP0, not AP1.

Gamut clipping is caused by the inadequacies of the math applied (3x3 matrices) in the ACES framework when mapping gamut, and an acknowledged shortcoming. Specific demonstration example here: Source - ‘The ODTs clip values’ section

As such the ACES framework fails to meet the original intent of gamut mapping as part of an ODT (“compressing luminance to the target color space if needed, and compressing wide gamuts to smaller gamuts while maintaining the intention of the scene”). If in doubt, a null test should be applied to test whether clipping may occur.

As stated further down - the fewer transforms are applied, the fewer math inadequacies the images get exposed to.

It should be noted that some of these issues may be addressed in ACES 2.0, though the documents I looked at didn’t provide clarity on that. With Flame 2026 now operating by default in ACES 2.0 these observations and recommendations may need to be updated.

Finally one recommendation is to avoid repeated color space transforms, as small mathematical errors risk stacking and degrading the result. I interpret this as converting to ACEScg for all comp and color work, and rendering intermediate files out in ACEScg, then doing the AP0 delivery transform only once as the very last step. Source 1 - ‘Delivery’, notes by Jim Houston

A case may be made that AP0 conversion should only be done during the final archive render. If facilities exchange files in AP0 where further pipeline work happens downstream, the files may be exposed to multiple stacking conversions. Exchange in ACEScg may be advisable in those cases, leaving AP0 conversion and output for the Final Archival Master - which is referenced in Netflix documentation, in their case the Non-Graded Archival Master. Source

This would imply that if Flame is used to create VFX plates going back to editorial/finishing, they should should be sent in ACEScg, not ACES2065-1. It’s the final render out of Baselight or Resolve that should be in ACES2065-1. Only if the final master is rendered in Flame, should Flame be rendering to ACES2065-1.

It’s noteworthy that in Netflix recommendation, mostly targeted at color workflows (not VFX) they specify to use ‘No Output Transform’ for renders from Resolve, which Resolve will automatically translate to outputting in AP0, even though it may internally use a different working color space (usually ACEScct as set in the project settings). Source

I did not find any Netflix documentation related to VFX and or working in AP0 vs. AP1.

PS: ACES 2.0 contains an entirely revamped gamut mapping algorithm that should make at least these concerns mute when working in Flame 2026 or later.

6 Likes

Don’t omit how bit-depth precision and image compression immediately and cumulatively affect pixels.

SMPTE briefly describe the various SMPTE/ACES formats here.

You can buy the documentation here for about $200 (some docs are free).

It appears that the future-forward wisdom is ACES2065-4 should be used as both an archival and transport container, since this is ACES2065-1 @ 32-bit with no compression, but it obviously requires more resources.

(although more performant compute, storage and networking make this less of a problem now)

3 Likes

I dont understand why people are getting all crazy on facts I post, … you should’nt discredit my posts. I think Randy gets all crazy like that because it contradicts his payed tutorial I nearly bought , …im losing respect for you, dude. You should just pull it, correct it and reupload it. And apologise, just like Adam did, with private message for his bad tone that I got the blame for, like children.

This is no reason to lock a post that may need to be better written in better English, I’ve read worse here, and it’s all drawn from Autodesk on flame on ACES. You’re talking shit.

Anyways once ACES2065-4 comes this will all be forgotten.

And I will have forgotten Logik, the fake one, right here.

BTW im not posting private docs under NDA, stupid.

No doubt, Randy (and probably the rest of them) won’t be able to handle this post or me and will just cancel me, good luck everyone and have a good life.

Im not reading this shit it’s probably about Nuke at 32bit ! this belongs in a Nuke forum.

My last post is actually golden but simple info for anyone having issues in flame that you won’t get in Nuke, and you should be thankful, there maybe a time when it clicks in your brain, thats not standing back enough and looking from a distance with flame only in mind

fuck it too many typo’s and cant be bothered any more

Adam all im saying is that is possible and not difficult and sometimes necessary in Flame to comp in AP0, ..this is not offensive, and im not blaming you if thats what you mean

Whilst I did apologise for my upsetting you by using the word bullshit, I take zero responsibility for what you said afterwards and said as much to you. Don’t blame me for what you said afterwards.

Hey @mux let me know if you want me to send you a password reset. I think someone took over your account and is saying mean things about people that that are teaching and sharing publically published documentation by Academy Award winning scientists and software developers.

Do you want me to send that to your personal email address or your LinkedIn profile?

2 Likes