シェーダーを使用して CoreGraphics kCBBlendModeSoftLight ブレンディングを複製しようとしています。(すでにいくつかの他の CG ブレンド モードを実装しています)
問題は、Photoshop のソフト ライト ブレンディングの (異なる) 説明がたくさんある一方で、CoreGraphics のバージョンに興味があることです。
ブレンドの結果を決定するためにCGで使用されている正確な式を知っている人はいますか?
シェーダーを使用して CoreGraphics kCBBlendModeSoftLight ブレンディングを複製しようとしています。(すでにいくつかの他の CG ブレンド モードを実装しています)
問題は、Photoshop のソフト ライト ブレンディングの (異なる) 説明がたくさんある一方で、CoreGraphics のバージョンに興味があることです。
ブレンドの結果を決定するためにCGで使用されている正確な式を知っている人はいますか?
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 つであるため、輝度値などを計算する必要はありません。