摘录一些看到的具体内容。
这次MiLog给出了明确的定义,和接入ACES所需的专用IDT(Input Device Transform),因此我们可以在各种色彩管理软件中建立对它的支持了。
基本

OETF和EOTF定义


这里我们注意到是采用了二次函数混合对数段,这与各大厂商类似。其实这种混合式的Gamma最熟悉的就是HLG,混合一段经典Gamma曲线和对数曲线来压缩高光,以编码更广的动态范围。
色域
看到Rec2020出现嘴角一扬,正如意料之中,这是现在不少微单采用的策略,比如N-log,F-log。

细节处理
阅读IDT之后我们可以留意到MiLog这次在接入ACES还是注意了诸多细节:
#define rec2020_to_xyz make_mat3(make_float3(0.6370f, 0.1446f, 0.1689f), make_float3(0.2627f, 0.6780f, 0.0593f), make_float3(0.0f, 0.0281f, 1.0610f))
#define d65_to_d60_cat02 make_mat3(make_float3(1.0120f, 0.0080f, -0.0158f), make_float3(0.0058f, 1.0014f, -0.0063f), make_float3(-0.0003f, -0.0010f, 0.9276f))
#define xyz_to_acesAP0 make_mat3(make_float3(1.0498f, 0.0f, -0.0001f), make_float3(-0.4959f, 1.3733f, 0.0982f), make_float3(0.0f, 0.0f, 0.9913f))
#define rec2020_to_AP0 mult_f33_f33(xyz_to_acesAP0, mult_f33_f33(d65_to_d60_cat02, rec2020_to_xyz))
IDT中很具体的呈现了力大飞砖的色彩转换过程,而不是纯把整个Rec2020 - ACES AP0打包为一个成品的Matrix
Rec2020采用D65白点,XYZ采用D50白点,ACES采用D60白点,我们注意到白点转换过程采用CIE CAT02色适应变换矩阵实现,这一点与ARRI相同。(看来RED用的Bradford也被抛弃了)
但就是这个多参数来实现EOTF有点看着烦
const float R_0 = -0.09023729;
const float R_t = 0.01974185;
const float a = 0.09271529;
const float b = 0.01384578;
const float g = 0.67291850;
const float c = 18.10531998;
const float P_t = c * pow((R_t - R_0), 2.0);
if (x >= P_t) {
return pow(2.0, (x - g) / a) - b;
}
else if (x P_t && x >= 0.0) {
return sqrt(x / c) + R_0;
}
else {
return R_0;
}