Difference between revisions of "BlendMode Formulas (日本語)"
(Created page with "これらの方程式は画面または有効な Canvas の内容を混合して描画する時に使用されます。 これら方程式の目的に...") |
m |
||
(2 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
*'''res''' - 処理結果の色。 | *'''res''' - 処理結果の色。 | ||
− | ここには | + | ここには 0.10.x 以降のバージョンにおける [[BlendMode (日本語)|BlendMode]] の方程式が記載されています: |
== 透過 == | == 透過 == | ||
Line 77: | Line 77: | ||
res.a = src.a | res.a = src.a | ||
− | == 乗法 ([[BlendAlphaMode (日本語)|透過方式]] | + | == 乗法 == |
+ | {{notice|0.10.x では、 ''multiply'' と ''alphamultiply'' は ''premultiplied'' と同一の方程式を使用します。この変種は [[11.0 (日本語)|11.0]] 以降で対応していません。}} | ||
+ | |||
+ | === "premultiplied" (事前乗算) [[BlendAlphaMode (日本語)|透過方式]] === | ||
res.r = src.r * dst.r | res.r = src.r * dst.r | ||
Line 104: | Line 107: | ||
== 画面 == | == 画面 == | ||
− | + | {{notice| "alphamultiply" (透過乗算) の使用時、この混合方式は数学的に完全かつ正確ではありません。可能ならば、その異形である "alphamultiply" (事前乗算)を選択してください (および内容の混合前に、その時点で RGB により透過が乗算されているか確認してください)。}} | |
=== "alphamultiply" (透過乗算) [[BlendAlphaMode (日本語)|透過方式]] === | === "alphamultiply" (透過乗算) [[BlendAlphaMode (日本語)|透過方式]] === |
Latest revision as of 01:16, 27 June 2019
これらの方程式は画面または有効な Canvas の内容を混合して描画する時に使用されます。
これら方程式の目的に対して、一般に色の要素は [0, 255] ではなく [0, 1] の範囲内にあります。Canvas 有効時を除き、結果として [0, 1] に固定された浮動小数点 / HDR 形式となります。
説明
- dst - 画面の既存色。
- src - オブジェクトの描画色 (ピクセル・シェーダーにより出利された色または、テクスチャの色により乗算された大域色 ― なにかあるとすれば、シェーダーが使用されていない場合)。
- res - 処理結果の色。
ここには 0.10.x 以降のバージョンにおける BlendMode の方程式が記載されています:
透過
"alphamultiply" (透過乗算) 透過方式
res.r = dst.r * (1 - src.a) + src.r * src.a res.g = dst.g * (1 - src.a) + src.g * src.a res.b = dst.b * (1 - src.a) + src.b * src.a res.a = dst.a * (1 - src.a) + src.a
"alphamultiply" (事前乗算) 透過方式
res.r = dst.r * (1 - src.a) + src.r res.g = dst.g * (1 - src.a) + src.g res.b = dst.b * (1 - src.a) + src.b res.a = dst.a * (1 - src.a) + src.a
加法
"alphamultiply" (透過乗算) 透過方式
res.r = dst.r + (src.r * src.a) res.g = dst.g + (src.g * src.a) res.b = dst.b + (src.b * src.a) res.a = dst.a
"alphamultiply" (事前乗算) 透過方式
res.r = dst.r + src.r res.g = dst.g + src.g res.b = dst.b + src.b res.a = dst.a
減法
"alphamultiply" (透過乗算) 透過方式
res.r = dst.r - (src.r * src.a) res.g = dst.g - (src.g * src.a) res.b = dst.b - (src.b * src.a) res.a = dst.a
"alphamultiply" (事前乗算) 透過方式
res.r = dst.r - src.r res.g = dst.g - src.g res.b = dst.b - src.b res.a = dst.a
置換
"alphamultiply" (透過乗算) 透過方式
res.r = src.r * src.a res.g = src.g * src.a res.b = src.b * src.a res.a = src.a
"alphamultiply" (事前乗算) 透過方式
res.r = src.r res.g = src.g res.b = src.b res.a = src.a
乗法
0.10.x では、 multiply と alphamultiply は premultiplied と同一の方程式を使用します。この変種は 11.0 以降で対応していません。 |
"premultiplied" (事前乗算) 透過方式
res.r = src.r * dst.r res.g = src.g * dst.g res.b = src.b * dst.b res.a = src.a * dst.a
明度
"alphamultiply" (事前乗算) 透過方式
res.r = max(src.r, dst.r) res.g = max(src.g, dst.g) res.b = max(src.b, dst.b) res.a = max(src.a, dst.a)
暗度
"alphamultiply" (事前乗算) 透過方式
res.r = min(src.r, dst.r) res.g = min(src.g, dst.g) res.b = min(src.b, dst.b) res.a = min(src.a, dst.a)
画面
"alphamultiply" (透過乗算) の使用時、この混合方式は数学的に完全かつ正確ではありません。可能ならば、その異形である "alphamultiply" (事前乗算)を選択してください (および内容の混合前に、その時点で RGB により透過が乗算されているか確認してください)。 |
"alphamultiply" (透過乗算) 透過方式
res.r = dst.r * (1 - src.r) + (src.r * src.a) res.g = dst.g * (1 - src.g) + (src.g * src.a) res.b = dst.b * (1 - src.b) + (src.b * src.a) res.a = dst.a * (1 - src.a) + src.a
"alphamultiply" (事前乗算) 透過方式
res.r = dst.r * (1 - src.r) + src.r res.g = dst.g * (1 - src.g) + src.g res.b = dst.b * (1 - src.b) + src.b res.a = dst.a * (1 - src.a) + src.a
旧版
透過 (0.9.0, 0.9.1, および 0.9.2)
res.r = dst.r * (1 - src.a) + src.r * src.a res.g = dst.g * (1 - src.a) + src.g * src.a res.b = dst.b * (1 - src.a) + src.b * src.a res.a = dst.a * (1 - src.a) + src.a
透過 (0.8.0 以前)
res.r = dst.r * (1 - src.a) + src.r * src.a res.g = dst.g * (1 - src.a) + src.g * src.a res.b = dst.b * (1 - src.a) + src.b * src.a res.a = dst.a * (1 - src.a) + src.a * src.a
premultiplied (0.9.2 以前)
res.r = dst.r * (1 - src.a) + src.r res.g = dst.g * (1 - src.a) + src.g res.b = dst.b * (1 - src.a) + src.b res.a = dst.a * (1 - src.a) + src.a
画面 (0.9.2 以前)
res.r = dst.r * (1 - src.r) + src.r res.g = dst.g * (1 - src.g) + src.g res.b = dst.b * (1 - src.b) + src.b res.a = dst.a * (1 - src.a) + src.a
加法 (0.9.2 以前)
res.r = dst.r + (src.r * src.a) res.g = dst.g + (src.g * src.a) res.b = dst.b + (src.b * src.a) res.a = dst.a + (src.a * src.a)
減法 (0.9.2 以前)
res.r = dst.r - src.r * src.a res.g = dst.g - src.g * src.a res.b = dst.b - src.b * src.a res.a = dst.a - src.a * src.a
乗法 (0.9.0, 0.9.1, および 0.9.2)
res.r = src.r * dst.r res.g = src.g * dst.g res.b = src.b * dst.b res.a = src.a * dst.a
乗法 (0.8.0 以前)
res.r = dst.r * (1 - src.a) + src.r * dst.r res.g = dst.g * (1 - src.a) + src.g * dst.g res.b = dst.b * (1 - src.a) + src.b * dst.b res.a = dst.a * (1 - src.a) + src.a * dst.a
置換 (0.9.2 以前)
res.r = src.r res.g = src.g res.b = src.b res.a = src.a
関連
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info