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.