获取32bit浮点颜色参数
(本文未经许可禁止转载)
Ae默认提供的方法只支持获取8bit,即每通道0~255种数据的颜色信息。这种数据在8bpc下没有任何问题,但是在16bpc和32bpc下就有很多瑕疵,会与自己算得颜色有些许误差。所以我们往往需要非常精确地颜色信息来描述客户输入。
来自官方的吐槽
下面是官方文档的原文(摘自AE SDK CC2017 文档):
We have something to admit to you; for years, even though we’ve given you 8 bit color
values, we’ve internally used floating point representations behind your back. That’s right,
even with over-bright colors, we’d only ever tell you ‘255, 255, 255’. Yeah, right. Well, we
can’t live the lie any longer! Given a color parameter (passed to you by After Effects in your effect’s parameter array), this function returns a floating point representation, including any
high dynamic range component.
所以官方自己都觉得0~255是个问题。所以提供了这样一个获取更精确颜色信息的方法。
奇妙获取方式
以下是PixelsWorld中服役的获取颜色参数信息的代码
AEGP_SuiteHandler suites(in_data->pica_basicP);
PF_PixelFloat pfm;
ERR(suites.ColorParamSuite1()->PF_GetFloatingPointColorFromColorDef(
in_data->effect_ref,
params[SKELETON_COLOR_COLOR_PARAMETER_0 + i],
&pfm
));