3

シェーダーを使用して CoreGraphics kCBBlendModeSoftLight ブレンディングを複製しようとしています。(すでにいくつかの他の CG ブレンド モードを実装しています)

問題は、Photoshop のソフト ライト ブレンディングの (異なる) 説明がたくさんある一方で、CoreGraphics のバージョンに興味があることです。

ブレンドの結果を決定するためにCGで使用されている正確な式を知っている人はいますか?

4

1 に答える 1

3

CG の場合、明示的に文書化されていませんが、Core Image の CISoftLightBlendMode フィルターの文書には次のように記載されています。

このフィルターを作成するために使用される式は、Adobe Developer Center からオンラインで入手できる PDF 仕様で説明されています。

PDF リファレンスを入手できるページは次のとおりです。与えられた式は次のとおりです(疑似コードで、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。)

このセクションの導入部では、定義が特定の表記法を使用するブレンド モードは「分離可能」であることに注意してください。これは、数式がコンポーネントに個別に適用されることを意味します。ソフト ライト ブレンド モードはこれらのブレンド モードの 1 つであるため、輝度値などを計算する必要はありません。

于 2013-04-02T07:28:32.160 に答える