Soft Light
Blend Modeの一つ
大まかに四種類ある?
https://en.wikipedia.org/wiki/Blend_modes#Soft_Light
Photoshop
$ {\displaystyle f_{\mathrm {photoshop} }(a,b)={\begin{cases}2ab+a^{2}(1-2b),&{\text{if }}b<0.5\\2a(1-b)+{\sqrt {a}}(2b-1),&{\text{otherwise}}\end{cases}}}
Pegtop-Delphi
$ {\displaystyle f_{pegtop}(a,b)=(1-2b)a^{2}+2ba}.
IFS Illusions
$ {\displaystyle f_{illusions.hu}(a,b)=a^{(2^{2(0.5-b)})}}
W3C for SVG & Canvas (html)
$ {\displaystyle f_{\mathrm {w3c} }(a,b)={\begin{cases}a-(1-2b)\cdot a\cdot (1-a)&{\text{if }}b\leq 0.5\\a+(2b-1)\cdot (g_{w3c}(a)-a)&{\text{otherwise}}\end{cases}}}
where:
$ {\displaystyle g_{\mathrm {w3c} }(a)={\begin{cases}((16a-12)\cdot a+4)\cdot a&{\text{if }}a\leq 0.25\\{\sqrt {a}}&{\text{otherwise}}\end{cases}}}
https://www.w3.org/TR/2013/WD-compositing-1-20131010/#blendingsoftlight
https://gyazo.com/62ce971c1e50b36b3882e643730dc51f
調べるなら{ソフト名}blend mode(またはsoft light)Equation (またはFormula)で多分出てくる
Affinity
For each of RGB:
If Blend > 0.5:
Dodge: Result = 1 – (1 – Base) * (1 – (Blend – 0.5))
Else (Blend <= 0.5):
Burn: Result = Base * (Blend + 0.5)
Note: There are several different algorithms used to create soft light.
from Affinity Blend modes notes by dmstraker
こいつWikipediaに書いてあるどれとも違いませんか?
https://www.youtube.com/watch?v=NGCJqLxwQ5c
え?同じDave StrakerがやってるチャンネルではW3C(SVGのもの)と一緒っつってるんだけど
2020年の動画だから仕様が変わったのか?
AffinityのChange LogのForumでSoft Lightって検索してみたけどそれらしいものはヒットしない
Kritaは4つすべてを実装している
偉すぎ
普通すべてのソフトウェアはそうすべきだと思うんですが
https://gyazo.com/a406b2b50ba9ec394b72b68626f522fbhttps://gyazo.com/1fd4026b9d85ddf1a7eb7e1bcf097b48
Blender
https://docs.blender.org/manual/en/latest/editors/texture_node/types/color/mix_rgb.html
Kritaにリンクを貼ってるのだけど、どれを採用してるんですか?
https://projects.blender.org/blender/blender/src/branch/main/intern/cycles/kernel/osl/shaders/node_mix.osl#L232
code:glsl
color node_mix_soft(float t, color col1, color col2)
{
float tm = 1.0 - t;
color one = color(1.0);
color scr = one - (one - col2) * (one - col1);
return tm * col1 + t * ((one - col1) * col2 * col1 + col1 * scr);
}
え?
どれ?
https://chatgpt.com/share/6904c36c-11d8-8011-a81d-9791b7265ed4
ChatGPT.icon
結論:
この node_mix_soft は Blender独自のSoft Light実装(PhotoshopやSVGではない)
終わった
結論まとめ:
Pegtop-Delphi 版 → 違う(条件分岐型)
illusions.hu 版 → ほぼ同じ(直接の元ネタ)
Blender の実装(このコード) → illusions.hu Soft Light の改良版(参考元)
補足:
illusions.hu の Soft Light は Photoshop の視覚的トーンに近づけるための「滑らかで条件分岐のない近似式」
Blender はこれを採用して「GPU向けにも安定して動作する」ようにした形
んー
Pegtop-Delphi 版 → 違う(条件分岐型)
これバリバリの嘘じゃね?
https://gyazo.com/eeca11f4cedd169a6673a183d0f7be8a
見た目的にはillusions.huよりもpegtopに近くないっすか?
Davinci Resolve
書いてない
---
比較してみる
合成素材
https://gyazo.com/41491becb46ff7acd92f20648a238708https://gyazo.com/fe5fa379e3e37b0ac5b02112d0bc9aed
左Aで右がB
Aが下のレイヤーでBが上のレイヤー
手順
上の8bpc画像を画像エディターで読み込み
Soft Lightで合成
基本的に以下のような設定で書き出し
https://gyazo.com/c0cd2687bc97d39b5a5bcab021c244ee
sRGBに矯正変換は外す
BlenderのCompositorで画像読み込み
Color SpaceはsRGB
Floored Moduloで0.1にしてから10を乗算
結果
Krita(Photoshop)
https://gyazo.com/13f4948dd0ae2af8c7d4274f9ab8889chttps://gyazo.com/16b0649aa4754741d367ad98f8091db0
Krita(Pegtop-Delphi)
https://gyazo.com/fa0d7a7f8b8c095cd9b650e45e17fb25https://gyazo.com/46f50644bdb22ca3cdc38054a958d1a6
バンディングは良いとしてなんでこんなに滑らかな曲線じゃないの?
Krita(ISF Illusions)
https://gyazo.com/a128eccd8d2feb1a65b43bae16fe95e5https://gyazo.com/73cbf2b0efdb4dbfbf0e7182ae52b396
なお2025.11.06現在では、言語環境を日本語にしていると、Fog Lighten (ISF Illusions)がソフトライト (ISF Illusions)として表示されているので混同しないように
https://gyazo.com/db8f64f6f4a241988ab1cbf2a58f26bf
https://gyazo.com/80d9760b9c85202457fff55253e0be96
https://gyazo.com/3aa534c7b5601804ad0176399721f6f1https://gyazo.com/1b5ee8efd682ccc4ad54651d7ab4217d
このように全然違うものが出力されます
Krita(SVG)
https://gyazo.com/1a4ed14823de2fdadf8dab99e44db58fhttps://gyazo.com/b483c0f3a06156a833fd721c095e57e3
Krita(Photoshop)とほぼ同じ
Krita(SVG)とKrita(Photoshop)の2つをDifferenceで合成すると一応僅かに値の違いはあるが…
https://gyazo.com/887945178ef90987ba232fa366e51215
Photoshop
https://gyazo.com/1fbc05b3b858efbc4c3d802f3cadad3ehttps://gyazo.com/4beda0cfee245d2b87e957ba3cc142c6
Krita(Phtoshop)とは少しだけ違う
Affinity
https://gyazo.com/f9bb9174ce331602c2b2335fcc66ae42https://gyazo.com/16b0649aa4754741d367ad98f8091db0
Krita(Photoshop)と全く同じだった
CLIP STUDIO PAINT
https://gyazo.com/e21a0468e95e8a7cf4e30f4b69c00c81https://gyazo.com/0b3d36d7e4f1f2c62a722229d0e0bebc
Krita(Photoshop)と僅かに違う…
Photoshopほどは違わない
DaVinci Resolve
https://gyazo.com/ac24c27567aec366564abc3fc2c41990https://gyazo.com/af1916c251ea9a73ab844fd9b44c32ed
は?yozba.icon
今までのどれとも異なります
Krita(Photoshop)やPhotoshopの下の方の値を持ち上げているように見えます
Blender
https://gyazo.com/e15205b93beac884b490a2cc315998e7https://gyazo.com/1aa865f82b6af9083c141b1d6c11c11d
Blenderも独自です
Pegtop-Delphiっぽい
他メモ
Photoshopでの書き出し設定が間違ってるのかなyozba.icon
試しにスクリーン合成でPhotoshopとAffinityから出力してみた
https://gyazo.com/fbf3dff50a954c1b55bb25ab9071dbechttps://gyazo.com/a036e8e80d116ff163f4c9269503828ahttps://gyazo.com/d1a33ced69db336d8640898465a9379ehttps://gyazo.com/d1a33ced69db336d8640898465a9379e
完全に一致しました
完全に同じだからBlenderから書き出した等値線の方は同じgyazoのid割り振られた
じゃあ書き出し設定の問題じゃないですね
出力するときにsRGBの補正がかかるせいでバンディングがものすごいことになっている
えーsRGBで補正されたグラデーションでテストしちゃったけどやり直したほうがええんすかねえhttps://gyazo.com/0fdfe7714f1f5f7f98fd47ec561d3662https://gyazo.com/099118f92dfd540ecbb26624689ed1ed
これ版で
https://gyazo.com/041b3493a35adf0dc3d8fdb4fc7a7f1f
んーまあ、どちらにしろっすね
https://gyazo.com/906b1cf1175585bfae45bede00746331
Pegtop Delphiはこちらでやったほうがキレイめ
それでも曲線がきれいではないのは何なんだ
ていうかこの画像と全然等値線の形が違うのはなんなんですか
https://gyazo.com/62ce971c1e50b36b3882e643730dc51f
pegtopはほぼそのままだが、ISF IllusionsとPhotoshopはかなり形が違う
https://ja.wikipedia.org/wiki/ファイル:Comparison_of_soft_light_blend_modes.png
https://github.com/nornagon
おそらくこの人?で信頼したいところではあるが…
出し方が違うともあんまり思えん…
もはや新種のソフトライトを見つけるのが楽しいフェーズに入ってきたかもしれんな
AE
Illustrator
Photopea
Processing
p5js
GIMP
Houdini
Aseprite
PixelComposer
Natron
Unity
Unreal Engine
Godot Engine