重复iOS kCGBlendModeSoftLight混合
我正在尝试使用着色器复制CoreGraphics kCBBlendModeSoftLight混合。(我已经实现了一些其他CG混合模式) 问题是,虽然Photoshop的柔光混合有很多不同的描述,但我对CoreGraphics的版本感兴趣重复iOS kCGBlendModeSoftLight混合,ios,core-graphics,shader,blending,color-blending,Ios,Core Graphics,Shader,Blending,Color Blending,我正在尝试使用着色器复制CoreGraphics kCBBlendModeSoftLight混合。(我已经实现了一些其他CG混合模式) 问题是,虽然Photoshop的柔光混合有很多不同的描述,但我对CoreGraphics的版本感兴趣 有人知道CG中用于确定混合结果的确切公式吗?对于CG,没有明确的文档记录,但说明: PDF规范中描述了用于创建此过滤器的公式,该规范可从Adobe Developer Center在线获得 给出的公式是(伪代码,由我根据PDF中的数学语法转录而成,希望我没有弄乱
有人知道CG中用于确定混合结果的确切公式吗?对于CG,没有明确的文档记录,但说明: PDF规范中描述了用于创建此过滤器的公式,该规范可从Adobe Developer Center在线获得 给出的公式是(伪代码,由我根据PDF中的数学语法转录而成,希望我没有弄乱其中的任何部分): (对于GLSL,您将使用
vec4
而不是CIKL的\uu color
)
本节导言指出,定义使用特定符号的混合模式是“可分离”的,这意味着该公式将单独应用于组件。柔和灯光混合模式是这些混合模式中的一种,因此您无需计算亮度值或类似值。太棒了!我得到了一些PDFReference文档,其中描述了SoftLight混合,但没有给出确切的公式。这台机器运转良好。很高兴在CI文档中找到这些信息。
D(float x) =
x ≤ 0.25
? ((16.0 × x - 12.0) × x + 4.0) × x
: sqrt(x)
softlight(__color backdrop, __color source) =
source ≤ 0.5
? backdrop - (1.0 - 2.0 × source) × backdrop × (1.0 - backdrop)
: backdrop + (2.0 × source - 1.0) × (D(backdrop) - backdrop)