Re: スクリーン合成での色の反転
8件表示
すべてのコメント一覧へ
投稿ツリー
-
スクリーン合成での色の反転 (たにし, 2011/7/24 0:15)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/7/25 11:16)
-
Re: スクリーン合成での色の反転 (たにし, 2011/8/3 10:43)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/8/3 12:53)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/8/3 13:19)
-
Re: スクリーン合成での色の反転 (たにし, 2011/8/3 20:28)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/8/4 9:11)
«
- Re: スクリーン合成での色の反転 (たにし, 2011/8/4 15:02)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/8/4 9:11)
«
-
Re: スクリーン合成での色の反転 (たにし, 2011/8/3 20:28)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/8/3 13:19)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/8/3 12:53)
-
Re: スクリーン合成での色の反転 (たにし, 2011/8/3 10:43)
-
Re: スクリーン合成での色の反転 (完全無欠猫, 2011/7/25 11:16)
完全無欠猫
居住地: 兵庫
投稿数: 750
ソースコードを見た方が早いと思ったので少し調べて見ました。
SCREENの処理はこうなっています。
void ramp_blend(int type, float *r, float *g, float *b, float fac, float *col)
{
float tmp, facm= 1.0f-fac;
switch (type) {
case MA_RAMP_BLEND:
*r = facm*(*r) + fac*col[0];
if(g) {
*g = facm*(*g) + fac*col[1];
*b = facm*(*b) + fac*col[2];
}
break;
case MA_RAMP_ADD:
*r += fac*col[0];
if(g) {
*g += fac*col[1];
*b += fac*col[2];
}
break;
case MA_RAMP_MULT:
*r *= (facm + fac*col[0]);
if(g) {
*g *= (facm + fac*col[1]);
*b *= (facm + fac*col[2]);
}
break;
case MA_RAMP_SCREEN:
*r = 1.0f - (facm + fac*(1.0f - col[0])) * (1.0f - *r);
if(g) {
*g = 1.0f - (facm + fac*(1.0f - col[1])) * (1.0f - *g);
*b = 1.0f - (facm + fac*(1.0f - col[2])) * (1.0f - *b);
}
break;
これを見る限りではfacは0.0-1.0の範囲を想定しているように見受けられます。
PhotoShopでも0-100%の範囲でしか設定できませんし・・・・
SCREENの処理はこうなっています。
void ramp_blend(int type, float *r, float *g, float *b, float fac, float *col)
{
float tmp, facm= 1.0f-fac;
switch (type) {
case MA_RAMP_BLEND:
*r = facm*(*r) + fac*col[0];
if(g) {
*g = facm*(*g) + fac*col[1];
*b = facm*(*b) + fac*col[2];
}
break;
case MA_RAMP_ADD:
*r += fac*col[0];
if(g) {
*g += fac*col[1];
*b += fac*col[2];
}
break;
case MA_RAMP_MULT:
*r *= (facm + fac*col[0]);
if(g) {
*g *= (facm + fac*col[1]);
*b *= (facm + fac*col[2]);
}
break;
case MA_RAMP_SCREEN:
*r = 1.0f - (facm + fac*(1.0f - col[0])) * (1.0f - *r);
if(g) {
*g = 1.0f - (facm + fac*(1.0f - col[1])) * (1.0f - *g);
*b = 1.0f - (facm + fac*(1.0f - col[2])) * (1.0f - *b);
}
break;
これを見る限りではfacは0.0-1.0の範囲を想定しているように見受けられます。
PhotoShopでも0-100%の範囲でしか設定できませんし・・・・
投票数:1
平均点:10.00
ログイン
クイックリンク
2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki