2013-04-01 73 views
3

我想使用着色器複製CoreGraphics kCBBlendModeSoftLight混合。 (我已經實現了一些其他的CG混合模式已經)重複的iOS kCGBlendModeSoftLight混合

問題是,雖然有很多如果(不同)的Photoshop的柔光混合描述,我對CoreGraphics的版本感興趣。

有沒有人知道在CG中使用確切的公式來確定混合的結果?

回答

3

對於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的。)

的導言部分指出,混合模式,其定義使用特定的符號是「分開的」,這意味着該公式分別適用於組件。軟光混合模式是這些混合模式之一,所以您不需要計算亮度值或類似的東西。

+0

太棒了!我掌握了一些描述了SoftLight混合的PDFReference doc,但沒有給出確切的公式。鏈接工作正常。很好地發現CI文檔中的信息。 – Nuoji