我想使用着色器複製CoreGraphics kCBBlendModeSoftLight混合。 (我已經實現了一些其他的CG混合模式已經)重複的iOS kCGBlendModeSoftLight混合
問題是,雖然有很多如果(不同)的Photoshop的柔光混合描述,我對CoreGraphics的版本感興趣。
有沒有人知道在CG中使用確切的公式來確定混合的結果?
我想使用着色器複製CoreGraphics kCBBlendModeSoftLight混合。 (我已經實現了一些其他的CG混合模式已經)重複的iOS kCGBlendModeSoftLight混合
問題是,雖然有很多如果(不同)的Photoshop的柔光混合描述,我對CoreGraphics的版本感興趣。
有沒有人知道在CG中使用確切的公式來確定混合的結果?
對於CG,它沒有明確記載,但the documentation for Core Image's CISoftLightBlendMode filter說:
用於創建此過濾器的公式中的PDF規範,可以在網上從Adobe開發者中心進行說明。
Here's the page you can get the PDF Reference from.給出的公式是(以僞代碼,通過我從數學語法的PDF轉錄同時希望我沒惹任何部分上):
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)
(對於GLSL,你會使用vec4
代替CIKL的__color
的。)
的導言部分指出,混合模式,其定義使用特定的符號是「分開的」,這意味着該公式分別適用於組件。軟光混合模式是這些混合模式之一,所以您不需要計算亮度值或類似的東西。
太棒了!我掌握了一些描述了SoftLight混合的PDFReference doc,但沒有給出確切的公式。鏈接工作正常。很好地發現CI文檔中的信息。 – Nuoji