Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重复iOS kCGBlendModeSoftLight混合_Ios_Core Graphics_Shader_Blending_Color Blending - Fatal编程技术网

重复iOS kCGBlendModeSoftLight混合

重复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中的数学语法转录而成,希望我没有弄乱

我正在尝试使用着色器复制CoreGraphics kCBBlendModeSoftLight混合。(我已经实现了一些其他CG混合模式)

问题是,虽然Photoshop的柔光混合有很多不同的描述,但我对CoreGraphics的版本感兴趣


有人知道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)