【发布时间】:2021-11-23 17:48:05
【问题描述】:
如果在 Metal 中有以下 CIKernel 过滤器:
namespace coreimage
{
float4 FilterA(sampler src, float exponent, float intensity)
{
float4 srcSample = src.sample(src.coord());
float r = min(srcSample.r, 2.0) / 2.0;
srcSample.r = 2.0 * (pow(r, exponent) * intensity);
srcSample.g = 0.0;
srcSample.b = 0.0;
return srcSample;
}
}
我在某处读到 RGB 通道的值范围是 0.0 ... 2.0。然而,Simon J Gladman 的“Core Image for Swift”一书似乎建议最大值为 1.0。
当我假设最大值为 1.0 并将上面的一行更改为 float r = min(srcSample.r, 1.0) 时,我得到不同的输出。
如果范围确实是 0.0 ... 2.0,这是否适用于传递到 CIKernel、CIColorKernel 和 CIWarpKernel 的所有图像?
那么,阅读this,色彩空间对RGB值范围有影响吗?
如果返回超出范围的 RGB 值会怎样?它们是被剪裁到范围内还是原封不动地传递给行中的下一个过滤器?
【问题讨论】:
标签: ios swift metal cifilter cikernel